我有一个网站example.com,我希望我的客户能够发送电子邮件support@example.com.我习惯使用Gmail,因此我希望收到我的Gmail帐户的所有电子邮件:me@gmail.com并使用Gmail界面回复我的客户.
我正在尝试使用Mailgun和亚马逊的Route 53来实现这一切.在一个方向,我想做这个工作:
some_customer@yahoo.com - > support@example.com - > Mailgun - >(将发件人地址"some_customer@yahoo.com"转换为某些"middleman@mailgun.com") - > me@gmail.com
换句话说,当客户发送support@example.com电子邮件时,它会到达我的Gmail收件箱.
在另一个方向,当我使用我熟悉的Gmail网络界面回复我的客户时:
me@gmail.com - > middleman@mailgun.com - > Mailgun - >(将发件人地址"me@gmail.com"转换为"support@example.com") - > some_customer@yahoo.com
在第二步中,由于我想回复客户,我只是回复,middleman@mailgun.com而Mailgun只是将我的gmail地址更改为support@example.com转发给我的客户.
可以这样做吗?如果是这样,怎么样?
谢谢,
如何检索并保存通过Mailgun POST的表单发送给我的附件
以下是一些参数
attachment-1
{:filename=>"crabby.gif", :type=>"image/gif", :name=>"attachment-1", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-slsrkh>, :head=>"Content-Disposition: form-data; name=\"attachment-1\"; filename=\"crabby.gif\"\r\nContent-Type: image/gif\r\nContent-Length: 2785\r\n"}
attachment-2
{:filename=>"attached_????.txt", :type=>"text/plain", :name=>"attachment-2", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-sudxuf>, :head=>"Content-Disposition: form-data; name=\"attachment-2\"; filename=\"attached_????.txt\"\r\nContent-Type: text/plain\r\nContent-Length: 32\r\n"}
Content-Type
multipart/mixed; boundary="------------020601070403020003080006"
Run Code Online (Sandbox Code Playgroud) 我正在尝试将我们的应用程序从python邮件切换到Mailgun,但是我遇到了带有附件的电子邮件的问题.特别是由应用程序生成的PDF(未存储在文件系统中).
发送没有附件的电子邮件没有问题.
目前我们生成PDF如下:
pdf = StringIO()
draw_pdf(pdf, params)
pdf.seek(0)
attachment = MIMEApplication(pdf.read())
attachment.add_header("Content-Disposition", "attachment", filename=filename)
pdf.close()
Run Code Online (Sandbox Code Playgroud)
然后附上并邮寄它:
from django.core.mail import EmailMultiAlternatives
msg = EmailMultiAlternatives(subject, text_content, from_email, to_email)
if html_content:
msg.attach_alternative(html_content, "text/html")
if attachment:
msg.attach(attachment)
msg.send()
Run Code Online (Sandbox Code Playgroud)
效果很好......我们如何转换为Mailgun电话?
我尝试了各种各样的事情,包括将其作为文件原样传递(失败):
requests.post(mailgun_url, auth=("api", mailgun_api), data=data, files=attachment)
Run Code Online (Sandbox Code Playgroud)
以上工作正常,没有附件.数据包含,来自,o:标签......等.
任何帮助,将不胜感激.谢谢!
通过更改我的PDF代码并获取request.post结构正确,我能够使它工作:
filename = "pdf_attachment.pdf"
pdf = StringIO()
draw_pdf(pdf, params)
pdf.seek(0)
attachment = ("attachment", (filename, pdf.read()))
r = requests.post(mailgun_url, auth=("api", mailgun_api), data=data, files=[attachment])
Run Code Online (Sandbox Code Playgroud) 这可能不是MailGun的问题,因为我无法通过Gmail发送.
我在下面看到的错误你可以看到域应该通过但没有通过.
POST https://api.mailgun.net/v3//messages.mime
Run Code Online (Sandbox Code Playgroud)
域名应该是
POST https://api.mailgun.net/v3/domin/messages.mime
Run Code Online (Sandbox Code Playgroud)
我知道我安装了Guzzle,我重新安装了Web服务器,我知道我的详细信息是正确的.我创建了一个测试项目,只做邮件,但无济于事.
可能是我的主机(macbook air)或我正在使用开发Web服务器的东西
php artisan serve
Run Code Online (Sandbox Code Playgroud)
我是Laravel的新手,所以我不确定我能做些什么.
services.php
'mailgun' => [
'domain' => env('sandbox*****.mailgun.org'),
'secret' => env('key-**************'),
],
Run Code Online (Sandbox Code Playgroud)
mail.php
'driver' => env('MAIL_DRIVER', 'mailgun'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => null, 'name' => null],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('postmaster@sandbox***********.mailgun.org'),
'password' => env('sandboxpassword'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => env('MAIL_PRETEND', false),
Run Code Online (Sandbox Code Playgroud)
A已经停止使用env文件,所以它默认为mail.php,但是当属性是相同的细节时,它是相同的结果.是的,只是因为它的问题,我知道你需要重新启动服务器,当你更改.env并且只是在安全网站上我一直在改变mail.php或services.php
TestController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use …Run Code Online (Sandbox Code Playgroud) 我从我的应用程序向用户发送电子邮件通知,但目前我只将其作为文本发送.我想发送它的风格HTML电子邮件.
目前我试过这个:
var data = {
from: 'my app',
to: user.email,
subject: 'Welcome',
html: '<div style="width: 500px; height: 400px: background: #ebebeb; color: #ddd"><p>Hi + "user.firstName" + \n ,this email is to inform you that has added their bio to the knowledge Base \n</p></div>'
};
Run Code Online (Sandbox Code Playgroud)
编译上面的代码不起作用,它不会像我已经把的样式.我创建了一个单独的HTML文件我的本地目录中为每种类型的电子邮件我要送,我希望能够附上HTML文件到我的邮箱.
像这样的东西:
var data = {
from: 'my app',
to: user.email,
subject: 'Welcome',
html: welcomeToSiteEmail.html
};
Run Code Online (Sandbox Code Playgroud)
以上可能吗?任何帮助将不胜感激.
我们正在实施对应用程序中的Mailgun事件跟踪的支持.我们回顾了提议的事件轮询算法,但发现自己对此不太满意.首先,我们不希望丢弃我们已经获取的数据,然后在暂停后从头开始重试.它不是很有效,并且为一个长循环的重试留下了一扇门,因为它不清楚循环应该何时结束.其次,"门槛年龄"似乎是确定"可信度"的关键,但其价值没有定义,只建议一个非常大的"半小时".
我们的理解是D_max,当事件被保证驻留在事件存储中时,事件在一些阈值延迟之后变得"值得信赖",让我们称之为"值得信赖" .如果是这样,我们可以用不同的方式实现这个算法,这样我们就不会获取我们知道不"值得信赖"的数据并利用已经获取的所有数据.
我们将定期获取数据,并在每次迭代时我们将:
T_1来T_2 = now() - D_max.对于第一次迭代,T_1可以设置为过去的某个时间,"例如,半小时前".对于后续迭代,T_1将其设置为T_2上一次迭代的值.我的问题是:
D_max多少?显然,我们可以使用"半小时",但我们希望在跟踪事件时更加敏捷,因此知道我们可以设置的最小值是什么并且仍然可靠地获取所有事件会很棒.谢谢!
我正在尝试使用来自firebase云功能的Mailgun的api发送电子邮件.我已经尝试在Cloud Function中实现了相同的nodejs教程,但我总是得到"错误:无法处理请求".请问我做错了什么.
云功能代码如下:
<pre>
<code>
var functions = require('firebase-functions');
var nodemailer = require('nodemailer');
var auth = {
auth: {
api_key: '###################',
domain: 's###############g'
}
}
exports.helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
var nodemailerMailgun = nodemailer.createTransport(auth);
exports.sendEmail = functions.https.onRequest((request, response) =>{
//app.get('/', function(req, res) {
test();
});
function test(){
const mailOptions = {
//Specify email data
from: "info@xyz.com",
//The email to contact
to: "xyz@yahoo.com",
//Subject and text data
subject: 'Hello from Mailgun',
text: 'Hello, This is not …Run Code Online (Sandbox Code Playgroud) 我正在用 ruby 尝试 mailgun API。我做的第一件事就是注册一个帐户。我有 api_key 和沙盒域处于活动状态。然后,我将自己的电子邮件添加到沙盒域中的授权收件人。我在文档中完全一样:
def send_simple_message
RestClient.post "https://api:key-mykey"\
"@api.mailgun.net/v3/sandboxe5148e9bfa2d4e99a1b02d237a8546fe.mailgun.org/messages",
:from => "Excited User <postmaster@sandboxe5148e9bfa2d4e99a1b02d237a8546fe.mailgun.org>",
:to => "my@email.com, postmaster@sandboxe5148e9bfa2d4e99a1b02d237a8546fe.mailgun.org",
:subject => "Hello",
:text => "Testing some Mailgun awesomness!",
:multipart => true
end
send_simple_message
Run Code Online (Sandbox Code Playgroud)
但它总是返回 400 个错误的请求,这是来自终端的跟踪:
/home/ys/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rest-client-2.0.0/lib/restclient/abstract_response.rb:223:in `exception_with_response': 400 Bad Request (RestClient::BadRequest)
from /home/ys/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rest-client-2.0.0/lib/restclient/abstract_response.rb:103:in `return!'
from /home/ys/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rest-client-2.0.0/lib/restclient/request.rb:860:in `process_result'
from /home/ys/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rest-client-2.0.0/lib/restclient/request.rb:776:in `block in transmit'
from /home/ys/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:853:in `start'
from /home/ys/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rest-client-2.0.0/lib/restclient/request.rb:766:in `transmit'
from /home/ys/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rest-client-2.0.0/lib/restclient/request.rb:215:in `execute'
from /home/ys/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rest-client-2.0.0/lib/restclient/request.rb:52:in `execute'
from /home/ys/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rest-client-2.0.0/lib/restclient.rb:71:in `post'
from mailgunner.rb:24:in `send_simple_message'
from mailgunner.rb:33:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我安装了rest-client gem,所以我认为我的注册有问题还是什么?
我有一个 Rails 应用程序,我通过 Mailgun smtp 发送电子邮件
mail(
to: @user.email,
subject: 'Notification From ME',
'X-Mailgun-Variables' => { subscription_id: subscription.id }.to_json
)
Run Code Online (Sandbox Code Playgroud)
标题在谷歌完整电子邮件视图(原始消息)中显示为
X-Mailgun-Variables: {"subscription_id":2}
Run Code Online (Sandbox Code Playgroud)
当我回复电子邮件时,我收到的讲解员的 Webhook 通知在负载中包含变量。
这个标题应该对客户端可见吗?
我应该如何设置变量或将变量发送到 mailgun,以便在触发电子邮件中继 webhook 时可以接收它们?
我希望能够从 foo@*.mydomain.com 发送并接收响应,而无需为我感兴趣的每个子域(bar.mydomain.com、baz.mydomain.com 等)手动设置 MX 记录。 com , ...)
Mailgun 文档显示了一个名为wildcard“Mailgun 允许您在单个域的多个子域接收电子邮件而无需实际添加它们的域上的设置。您仍然需要在您的 DNS 提供商处为您的子域添加适当的 MX 记录”网络用户界面。
对此ServerFault 答案的评论似乎暗示必须为每个子域创建一个新的 MX 记录。我宁愿不必这样做,而只需通过以下方式保持动态:
@ IN MX 10 mxa.mailgun.org.
@ IN MX 10 mxb.mailgun.org.
*.mydomain.com. IN MX 10 mxa.mailgun.org.
*.mydomain.com. IN MX 10 mxb.mailgun.org.
Run Code Online (Sandbox Code Playgroud)
Mailgun 是否支持从通配符子域发送和接收?如果是这样,应该添加哪些 DNS 记录(MX 和 SPF/DKIM)?
(这个有点相关的问题没有列出具体细节。)