1

こんにちは、heroku と gmail でメール サーバーとしてメールを送信するポップアップ コンタクト フォームを作成しようとしています。ポップアップ部分は問題ありませんが、メールを送信できません。問題を見つけてください。アイデアは、私が理解しているherokuのサードサイドサーバーとしてgmailを使用することです。助けてくれてありがとう

index.html ファイルの js 部分

 <!-- contact form pop -->
<script>
      $(document).ready(function () {
          $("input#submit").click(function(){
             $.ajax({
                         type: "POST",
                         url: "process.php", //process to mail
                         data: $('form.contact_body').serialize(),
                                 success: function(msg){
                                 $("#thanks").html(msg) //hide button and show thank you
                                 $("#contact").modal('hide'); //hide popup
                                 },
                                 error: function(){
                                        alert("sorry the message could not be send");
                                 }
                               });
                  });
             });
  </script>

マークアップ部分

      <div class="modal-body">
        <form class="contact_body" name="contact_body">
          <label class="label" for="form_name">Your Name</label><br>
          <input type="text" name="form_name" id="form_name" class="input-xlarge"><br>
          <label class="label" for="form_email">Your E-mail</label><br>
          <input type="form_email" name="form_email" class="input-xlarge"><br>
          <label class="label" for="form_msg">Enter a Message</label><br>
          <textarea name="form_msg" class="input-xlarge"></textarea>
         </form>
       </div>
       <div class="modal-footer">
         <input class="btn btn-success" type="submit" value="Send!" id="submit">
         <a href="#" class="btn" data-dismiss="modal">Nah.</a>
       </div>
     </div>

process.php ファイル

<?php

// Pear Mail Library
require_once "Mail.php";

$from = '<from.gmail.com>';
$to = '<to.yahoo.com>';
subject = 'Hi!';
$body = "Hi,\n\nHow are you?";

$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
    'host' => 'ssl://smtp.gmail.com',
    'port' => '465',
    'auth' => true,
    'username' => 'moviply.tv@gmail.com',
    'password' => 'pass'
));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo('<p>' . $mail->getMessage() . '</p>');
 } else {
echo('<p>Message successfully sent!</p>');
}


/*
$myemail = 'moviply.tv@gmail.com';
if (isset($_POST['name'])) {
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$message = strip_tags($_POST['message']);
echo "<span class=\"alert alert-success\" >Your message has been received. Thanks!      Here   is what you submitted:</span><br><br>";
echo "<stong>Name:</strong> ".$name."<br>";
echo "<stong>Email:</strong> ".$email."<br>";
echo "<stong>Message:</strong> ".$message."<br>";


$to = $myemail;
$email_subject = "Contact form submission: $name";
$email_body = "You have received a new message. ".
" Here are the details:\n Name: $name \n ".
"Email: $email\n Message \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
mail($to,$email_subject,$email_body,$headers);
*/

?>
4

3 に答える 3

0

gmail が現在このサービスをブロックしているのではないかと心配しており、より簡単な解決策には別のルートが必要です。Google アプリを使用している場合を除きます (現在の価格は月額 5 ドルです)。

サーバーは、heroku 独自の Sendgrid アドオンで 200 (ok) の応答を返しました。したがって、一時的な解決策は send-grid を使用し、必要に応じて将来別のものに移行することです。まだ完全にテストされていないためです。

于 2013-09-20T15:39:12.237 に答える