vue如何实现邮件发送
使用第三方邮件服务API
通过集成第三方邮件服务(如SendGrid、Mailgun、AWS SES等)的API发送邮件。这些服务提供简单的HTTP接口,通常有免费额度。
安装对应服务的SDK或直接调用API:
// 以SendGrid为例
import axios from 'axios';
const sendEmail = async (to, subject, text) => {
const data = {
personalizations: [{ to: [{ email: to }] }],
from: { email: 'your-verified-email@domain.com' },
subject,
content: [{ type: 'text/plain', value: text }]
};
try {
await axios.post('https://api.sendgrid.com/v3/mail/send', data, {
headers: {
'Authorization': `Bearer YOUR_SENDGRID_API_KEY`,
'Content-Type': 'application/json'
}
});
} catch (error) {
console.error('发送失败:', error.response.data);
}
};
后端服务集成
在Node.js后端使用Nodemailer等库处理邮件发送,前端通过API调用触发:

后端示例(Node.js + Express):
const nodemailer = require('nodemailer');
const express = require('express');
const app = express();
const transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-app-password' // 使用应用专用密码
}
});
app.post('/api/send-email', async (req, res) => {
const mailOptions = {
from: 'your-email@gmail.com',
to: req.body.to,
subject: req.body.subject,
text: req.body.text
};
try {
await transporter.sendMail(mailOptions);
res.status(200).json({ success: true });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(3000);
前端调用示例:

methods: {
async sendEmail() {
try {
const response = await axios.post('/api/send-email', {
to: 'recipient@example.com',
subject: 'Vue邮件测试',
text: '这封邮件来自Vue应用'
});
console.log('发送成功:', response.data);
} catch (error) {
console.error('发送失败:', error.response.data);
}
}
}
浏览器端直接发送(受限方案)
通过mailto:协议唤起用户默认邮件客户端,但无法自定义内容和附件:
<template>
<a href="mailto:recipient@example.com?subject=邮件主题&body=邮件内容">发送邮件</a>
</template>
或使用JavaScript触发:
window.location.href = 'mailto:recipient@example.com?subject=主题&body=内容';
注意事项
- 敏感信息如API密钥应存储在环境变量中
- 生产环境需配置SPF/DKIM/DMARC记录防止邮件被标记为垃圾邮件
- 免费服务通常有发送限制(如每天100封)
- 浏览器端直接发送方案依赖用户本地邮件客户端配置






