标签: mailgun

使用Python请求库以HTML格式发送Mailgun内联图像

我无法解决如何使用请求库从Python应用程序使用Mailgun api发送多个内联消息的问题.目前我有(使用jinja2作为模板和烧瓶作为web框架,托管在Heroku上):

def EmailFunction(UserEmail):
    Sender = 'testing@test.co.uk'
    Subject = 'Hello World'
    Text = ''
    name = re.sub('@.*','',UserEmail)
    html = render_template('GenericEmail.html', name=name)
    images = []
    imageloc = os.path.join(dirname, 'static')
    images.append(open(os.path.join(imageloc,'img1.jpg')))
    images.append(open(os.path.join(imageloc,'img2.jpg')))
    send_mail(UserEmail,Sender,Subject,Text,html,images)
    return html

def send_mail(to_address, from_address, subject, plaintext, html, images):
    r = requests.\
        post("https://api.mailgun.net/v2/%s/messages" % app.config['MAILGUN_DOMAIN'],
            auth=("api", app.config['MAILGUN_KEY']),
             data={
                 "from": from_address,
                 "to": to_address,
                 "subject": subject,
                 "text": plaintext,
                 "html": html,
                 "inline": images
             }
         )
    return r
Run Code Online (Sandbox Code Playgroud)

因此,电子邮件发送正常,但最后没有图像在电子邮件中.当我点击下载它们时,它们不显示.根据mailgun api在HTML中引用图像(当然简化了!);

<img src="cid:img1.jpg"/>
<img src="cid:img2.jpg"/>
etc ...
Run Code Online (Sandbox Code Playgroud)

显然我做错了,但是我尝试使用requests.files对象附加这些,它甚至没有发送电子邮件并且没有给出任何错误,因此我认为这根本不是正确的方法.

可悲的是,关于此的文档相当稀少.

让HTML直接指向服务器端图像会更好吗?然而,这并不理想,因为服务器端图像通常不会是静态的(有些会,有些则不会).

html python email python-requests mailgun

6
推荐指数
2
解决办法
5627
查看次数

如何在MailGun上正确设置我的域名?

这可能是我唯一的问题.我在mailgun帐户中的域名下收到此消息:

Warning: Some of your domains (in red) have DNS configuration issues.

我该怎么办?我尝试了一个巨大的随机域名,它做了同样的事情.

谢谢你看看!

--------------------------如果这不是我唯一的问题---------------- ----------------

我正在使用parse.com和MailGun.我已经设置了所有解析的东西,我已经使用MailGun创建了一个帐户,并使用MailGun添加了一个自定义域名.这是我的iOS代码:

    NSDictionary *params = [NSDictionary dictionaryWithObject:@"This is sent from your iPhone." forKey:@"text"];
    [PFCloud callFunctionInBackground:@"emailGrocery" withParameters:params block:^(id object, NSError *error)
    {
        if(!error)
        {
            NSLog(@"Succeeded");
        }
        else
        {
            NSString *errorMsg = [[error userInfo] objectForKey:@"error"];
            NSLog(@"%@", errorMsg);
        }
    }];
Run Code Online (Sandbox Code Playgroud)

这是解析的一个例子.我认为这是应该做的,因为我在日志中收到错误消息.

这是我的云代码:

 var Mailgun = require('mailgun');
 Mailgun.initialize('domain.com', 'key');

 Parse.Cloud.define("emailGrocery", function(request, response) {
 Mailgun.sendEmail({
   to: "myemail@gmail.com",
   from: "myemail@gmail.com",
   subject: "Hello from Cloud Code!",
   text: "Using Parse and Mailgun is …
Run Code Online (Sandbox Code Playgroud)

email dns parse-platform mailgun

6
推荐指数
2
解决办法
1万
查看次数

使用Javascript发送带有Mailgun的电子邮件

我正在使用JS,我有以下代码:

  var XHRResponse = XHR.send("POST", "https://api.mailgun.net/v2/sandbox224f28ae45a8499d84184fd4c48e62ee.mailgun.org/messages",{
    "parameters": {
      "from": "Mailgun Sandbox <postmaster@sandbox224f28ae45a8499d84184fd4c48e62ee.mailgun.org>",
      "to": "Jordi <myname@gmail.com>",
      "subject": "Hello Jordi",
      "text": "Congratulations Jordi, you just sent an email with Mailgun!  You are truly awesome!  You can see a record of this email in your logs: https://mailgun.com/cp/log .  You can send up to 300 emails/day from this sandbox server.  Next, you should add your own domain so you can send 10,000 emails/month for free."
    }
  }); 
Run Code Online (Sandbox Code Playgroud)

我需要使用apikey进行身份验证,但我不知道在哪里以及如何进行身份验证.

谢谢

javascript rest sendmail mailgun

6
推荐指数
1
解决办法
7813
查看次数

为什么 Gmail 会因为不符合 RFC 2822 而拒绝我们的电子邮件?

我们使用Mailgun发送电子邮件,最近我注意到每天都有不少电子邮件被 Gmail 拒绝。

这是我们收到的消息类型:

550
5.7.1 [184.173.153.6      11] Our system has detected that this message is
5.7.1 not RFC 2822 compliant. To reduce the amount of spam sent to Gmail,  
5.7.1 this message has been blocked. Please review
5.7.1 RFC 2822 specifications for more information. f15si23385851vdu.1 - gsmtp
Run Code Online (Sandbox Code Playgroud)

RFC 2822规范是一份庞大的文档,因此我没有从头到尾阅读它,但通过查看网络上的资源,我们的电子邮件不会陷入任何会触发 Gmail 此类响应的常见陷阱。

以下是电子邮件标头示例:

Received: by luna.mailgun.net with HTTP; Mon, 29 Jun 2015 21:06:59 +0000
Message-Id: <20150629210659.18668.39318@(domain)>
X-Mailgun-Variables: {"variation": "original", "campaign_code":
 "(customValue)"}
Reply-To: (name) <(email)>
X-Mailgun-Track: false
X-Mailgun-Tag: …
Run Code Online (Sandbox Code Playgroud)

email gmail spam rfc2822 mailgun

6
推荐指数
1
解决办法
3768
查看次数

如何在mailgun中重新发送丢弃的电子邮件

如何在mailgun中重新发送丢弃的电子邮件?

我正在使用mailgun在我的应用程序中发送邮件,但有些邮件被删除了.有没有方法重新发送丢弃的邮件?

rest sendmail email-spec mailgun

6
推荐指数
3
解决办法
5226
查看次数

使用python使用Mailgun发送附件

我正在尝试使用requests.post发送带有Mailgun API的附件的电子邮件.

在他们的文档中,他们警告在发送附件时必须使用 multipart/form-data编码,我正在尝试这样做:

import requests
MAILGUN_URL = 'https://api.mailgun.net/v3/sandbox4f...'
MAILGUN_KEY = 'key-f16f497...'


def mailgun(file_url):
    """Send an email using MailGun"""

    f = open(file_url, 'rb')

    r = requests.post(
        MAILGUN_URL,
        auth=("api", MAILGUN_KEY),
        data={
            "subject": "My subject",
            "from": "my_email@gmail.com",
            "to": "to_you@gmail.com",
            "text": "The text",
            "html": "The<br>html",
            "attachment": f
        },
        headers={'Content-type': 'multipart/form-data;'},
    )

    f.close()

    return r


mailgun("/tmp/my-file.xlsx")
Run Code Online (Sandbox Code Playgroud)

我已经定义了标头以确保内容类型是multipart/form-data,但是当我运行代码时,我得到400状态,原因是:Bad Request

怎么了?我需要确保我正在使用multipart/form-data并正确使用附件参数

python multipartform-data email-attachments python-requests mailgun

6
推荐指数
1
解决办法
3800
查看次数

ruby mailgun发送邮件失败,400个错误请求

我正在用 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,所以我认为我的注册有问题还是什么?

ruby mailgun

6
推荐指数
1
解决办法
1744
查看次数

MeteorJS Mailgun Webhook Bounced Event

我正在尝试点击mailgun的webhook并在meteorjs中接收数据.我正在处理这个事件Router,但是在bounced活动期间,我什么都没发现req.body.

以下是我的代码:

Router.route('/api/v1/mailgun/hooks',{ where: 'server' })
.post(function() {
    Router.onBeforeAction(Iron.Router.bodyParser.urlencoded({
        extended: false
    }));

    this.response.setHeader('access-control-allow-origin', 'mailgun.com');
    var req = this.request;
    var res = this.response;
    var values = req;

    res.end('Well this is the end');

    // console.log('The event is ', values);
    var campaignId, campaignId1, recipient, message_id, timestamp, domain, city, client_name, client_os, client_type,
        country, device_type, user_agent, ip_address, url = '',event;

    if (values.event == 'delivered') {
        //Key Values
        domain = values['domain'];
        event = values['event'];
        t_camp = values['X-Mailgun-Tag'];
        campaignId = t_camp.split(":")[1]; …
Run Code Online (Sandbox Code Playgroud)

multipart webhooks meteor mailgun

6
推荐指数
1
解决办法
134
查看次数

Laravel on Localhost - 无法与主机smtp.gmail.com建立连接[连接超时#110]

我正在尝试使用Mailgun

'driver' => env('MAIL_DRIVER', 'mailgun'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),


MAILGUN_DOMAIN=xxxxxxxxxx,
MAILGUN_SECRET=xxxxxxxxxx,

MAIL_DRIVER=smtp



MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Run Code Online (Sandbox Code Playgroud)

这个错误很奇怪.为什么要尝试连接到Gmail?

Connection could not be established with host smtp.gmail.com [Connection timed out #110]
Run Code Online (Sandbox Code Playgroud)

编辑:

Now I am getting

"mail" => array:9 [?
      "driver" => "smtp"
      "host" => "smtp.mailgun.org"
      "port" => "2525"
      "from" => array:2 [?]
      "encryption" => null
      "username" => null
      "password" => null
      "sendmail" => "/usr/sbin/sendmail -bs"
      "markdown" => array:2 [?
        "theme" => "default"
Run Code Online (Sandbox Code Playgroud)

email laravel mailgun laravel-mail

6
推荐指数
2
解决办法
2万
查看次数

Mailgun 使用通配符子域发送和接收

我希望能够从 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)?

这个有点相关的问题没有列出具体细节。)

mailgun

6
推荐指数
1
解决办法
1403
查看次数