Mandrill:无法通过表单发送邮件

Posted

技术标签:

【中文标题】Mandrill:无法通过表单发送邮件【英文标题】:Mandrill: Unable to send mail through the form 【发布时间】:2014-11-21 23:08:25 【问题描述】:

我有一个 html 联系表,我正在尝试使用 Mandrill API 发送电子邮件。如果我用我的电子邮件填写表格的电子邮件部分,该表格只会向我发送电子邮件。但是,如果我输入诸如“example@gmail.com”之类的内容,它将不会发送到我的 gmail 帐户。

我做错了什么???整天卡在这上面。

这是我的 html 表单:

<!-- Form Name -->

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="name">Name</label>  
  <div class="col-md-5">
  <input id="name" name="name" type="text" placeholder="Enter your full name here" class="form-control input-md" required="">

  </div>
</div>

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="email">Email</label>  
  <div class="col-md-5">
  <input id="email" name="email" type="text" placeholder="Enter your email address here" class="form-control input-md" required="">

  </div>
</div>

<!-- Textarea -->
<div class="form-group">
  <label class="col-md-4 control-label" for="msg">Message</label>
  <div class="col-md-4">                     
    <textarea class="form-control" id="msg" name="msg" cols="6" rows="6"></textarea>
  </div>
</div>

<!-- Button -->
<div class="form-group">
  <label class="col-md-4 control-label" for="submit"></label>
  <div class="col-md-4">
    <button id="submit" name="submit" class="btn btn-primary" formmethod="POST">Send Message</button>
  </div>
</div>

</fieldset>
</form>

这是我的contact.js

jQuery(function($)  

    $("#contact_form").submit(function()
    
        var email = $("#email").val(); // get email field value
        var name = $("#name").val(); // get name field value
        var msg = $("#msg").val(); // get message field value
        $.ajax(
        
            type: "POST",
            url: "https://mandrillapp.com/api/1.0/messages/send.json",
            data: 
                'key': 'API Key',
                'message': 
                    'from_email': email,
                    'from_name': name,

                    'subject': 'Website Contact Form',
                    'text': msg,
                    'to': [
                    
                        'email': 'myaddress@gmail.com',
                        'name': 'Taimur K Naziri',
                        'type': 'to'
                    ]
                
            
        )
        .done(function(response) 
            alert('Your message has been sent. Thank you!'); // show success message
            $("#name").val(''); // reset field after successful submission
            $("#email").val(''); // reset field after successful submission
            $("#msg").val(''); // reset field after successful submission
        )
        .fail(function(response) 
            alert('Error sending message.');
        );
        return false; // prevent page refresh
    );
);

【问题讨论】:

澄清一下:您是说此代码适用于您在表单中输入的 一些 值(您的电子邮件),但不适用于其他值(gmail 电子邮件地址)?跨度> 如果我输入我的电子邮件(gmail 地址)它可以工作,但是如果我输入另一个人的电子邮件(gmail 或 yahoo 地址)它就不起作用。因此,如果我在电子邮件中输入任何名称,消息将发送给我。反对用户输入他们的姓名、电子邮件和应该发送到我的 gmail 的消息。这就是我想要做的。 它是如何失败的?您是否从 Mandrill API 返回错误?还是 API 调用成功了,然后发生了其他事情? 它可以正常工作,只是它不适用于来自 yahoo、地址的电子邮件,你知道为什么吗? 【参考方案1】:

看起来这可能是 Mandrill 限制。 您可能应该使用回复标头而不是更改发件人地址。

【讨论】:

【参考方案2】:

它工作正常,但是当使用@yahoo.com 电子邮件地址提交表单时它不起作用。但是还没弄清楚为什么。

【讨论】:

这是因为 Yahoo、AOL 和 Zendesk 拒绝从他们的电子邮件地址发送的不是来自他们自己的服务器的电子邮件。在技​​术方面,他们将 dmarc 政策设置为 p=reject

以上是关于Mandrill:无法通过表单发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Parse Cloud Code 和 Mandrill 发送电子邮件

无法通过 Mandrill 发送密件抄送电子邮件(通过 Laravel)

通过电子邮件发送 HTML 表单

Codeigniter 和 Mandrill api,无法发送电子邮件

无法使用 laravel + mandrill 发送 html 电子邮件

通过 Mandrill 发送电子邮件