2014-09-26 7 views
0

У меня есть контактная форма HTML, и я пытаюсь использовать API Mandrill для отправки электронной почты. Форма отправляет мне письма только в том случае, если я напишу свой электронный адрес в форме электронной почты. Однако, если я наберу что-то вроде «[email protected]», он не отправит мою учетную запись gmail.Mandrill: Не удалось отправить письмо через форму

Что я делаю неправильно ??? Застрял на этом весь день.

Вот мой 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': '[email protected]', 
         '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 
    }); 
}); 
+0

Чтобы уточнить: вы говорите, что этот код работает для значений _some_, которые вы вводите в форму (ваш адрес электронной почты), но не для других (адрес электронной почты gmail)? –

+0

он работает, если я вхожу в свой адрес электронной почты (адрес gmail), однако он не работает, если я введу электронное письмо другого человека (адрес gmail или yahoo). Поэтому, если я укажу любое имя с моей электронной почтой, сообщение будет отправлено мне. Не обращайтесь к пользователю, введя свое имя, свою электронную почту и свое сообщение, которое должно быть отправлено на мой gmail. Это то, что я пытаюсь сделать. – scrippyfingers

+0

Как это происходит? Получаете ли вы ошибку от API Mandrill? Или вызов API получается успешно, а затем что-то еще происходит? – Kaitlin

ответ

0

Это выглядит так, как будто это может быть Mandrill ограничение. Возможно, вы должны использовать заголовок reply-to вместо изменения адреса.

0

Он работает нормально, однако он не работает, когда форма отправляется с адресом электронной почты @ yahoo.com. Однако не выяснили, почему.

+0

Это потому, что Yahoo, AOL и Zendesk отклоняют электронные письма, отправленные с их адресов электронной почты, которые не исходят от их собственного сервера. В техническом плане они устанавливают свою политику dmarc на p = reject –