如何将文件附加到POST请求到Mailgun';s API使用Node.js和请求库
我正在写一些代码通过电子邮件发送带有附件的电子邮件。他们在他们的示例中给出了以下示例,我需要弄清楚如何在Node.js中执行相同的操作(最好使用请求库)如何将文件附加到POST请求到Mailgun';s API使用Node.js和请求库,node.js,request,mailgun,Node.js,Request,Mailgun,我正在写一些代码通过电子邮件发送带有附件的电子邮件。他们在他们的示例中给出了以下示例,我需要弄清楚如何在Node.js中执行相同的操作(最好使用请求库) 对于基本授权部分,您必须设置正确的标题并发送用户名和密码base64编码。有关更多信息,请参见此。您可以为此使用标题选项 如何发送带有表单字段的POST请求,请参见: 我没有测试它,因为我没有mailgun帐户,但它应该可以工作。我按照上面的模式添加文件,mailgun发回一个错误,说“'from'参数丢失”,这让我认为我做错了什么。node
对于基本授权部分,您必须设置正确的标题并发送用户名和密码base64编码。有关更多信息,请参见此。您可以为此使用
标题
选项
如何发送带有表单字段的POST请求,请参见:
我没有测试它,因为我没有mailgun帐户,但它应该可以工作。我按照上面的模式添加文件,mailgun发回一个错误,说“'from'参数丢失”,这让我认为我做错了什么。node mailgun不支持附件(或者html电子邮件),我没有想过使用NodeEmailer。虽然它通过SMTP网关支持附件和Mailgun,这很好,但我仍然很好奇您是如何添加授权参数的,比如
url=”https://api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0@api.mailgun.net/v2/samples.mailgun.org/log”代码>到mailgun\u uri
?我在回答中为NodeEmailer添加了一些代码。是的,我没有显示所有的代码。稍后我会让nodemailer试一试。
curl -s -k --user api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0 \
https://api.mailgun.net/v2/samples.mailgun.org/messages \
-F from='Excited User <me@samples.mailgun.org>' \
-F to='obukhov.sergey.nickolayevich@yandex.ru' \
-F cc='sergeyo@profista.com' \
-F bcc='serobnic@mail.ru' \
-F subject='Hello' \
-F text='Testing some Mailgun awesomness!' \
-F html='\<html\>HTML version of the body\<\html>' \
-F attachment=@files/cartman.jpg \
-F attachment=@files/cartman.png
r = request(
url: mailgun_uri
method: 'POST'
headers:
'content-type': 'application/x-www-form-urlencoded'
body: email
(error, response, body) ->
console.log response.statusCode
console.log body
)
form = r.form()
for attachment in attachments
form.append('attachment', fs.createReadStream(attachment.path))
var r = request.post('http://service.com/upload')
var form = r.form()
form.append('from', 'Excited User <me@samples.mailgun.org>') // taken from your code
form.append('my_buffer', new Buffer([1, 2, 3]))
form.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png')) // for your cartman files
form.append('remote_file', request('http://google.com/doodle.png'))
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Mailgun", // sets automatically host, port and connection security settings
auth: {
user: "api",
pass: "key-3ax6xnjp29jd6fds4gc373sgvjxteol0"
}
});
var mailOptions = {
from: "me@tr.ee",
to: "me@tr.ee",
subject: "Hello world!",
text: "Plaintext body",
attachments: [
{ // file on disk as an attachment
fileName: "text3.txt",
filePath: "/path/to/file.txt" // stream this file
},
{ // stream as an attachment
fileName: "text4.txt",
streamSource: fs.createReadStream("file.txt")
},
]
}
transport.sendMail(mailOptions, function(err, res) {
if (err) console.log(err);
console.log('done');
});