Может кто-нибудь помочь мне с phpmailer? - PullRequest
0 голосов
/ 20 октября 2011

Я написал письмо в формате HTML, и до сих пор все работало. Я планировал отправить его с помощью PHP (используя функцию mail ();). Однако, когда я сделал это, почта не пришла на учетные записи hotmail и gmail. Я немного погуглил, и люди предложили использовать PHPmailer.

Я скачал PHPmailer и установил его на свой сервер. Все идет нормально. Но теперь у меня есть следующий код:

<?php
set_include_path('.:c:\domains\mydomain\wwwroot\phpmailer\phpmailer.inc.php');
set_include_path('.:c:\domains\mydomain\wwwroot\phpmailer\smtp.inc.php');

require("phpmailer.inc.php");


$mail = new PHPMailer();

$mail->IsHTML(true);
$mail->From     = "from@example.com";
$mail->AddAddress("mymail@mydomain.com");

$mail->Subject  = "An HTML Message";
$mail->Body     = "Hello, <b>my friend</b>! \n\n This message uses HTML entities!";

if($mail->Send()) {
  echo 'Message is sent';

} else {
  echo 'Message was not sent..';
 echo 'Mailer error: ' . $mail->ErrorInfo;
}
?>

У меня есть несколько проблем:

  • В выводе сообщается, что электронное письмо не отправлено, но оно есть.
  • Я получаю два предмета
  • Если я добавлю больше html (например, таблицы), он все равно будет отклонен hotmail (и, вероятно, тоже gmail).

Кроме того, я увидел, что есть функция SMTP. Как использовать эту функцию? Нужно ли мне записывать свой собственный SMTP?

Был бы очень рад, если бы кто-нибудь мог мне помочь!

редактирование:

class SMTP {
    var $SMTP_PORT = 25; # the default SMTP PORT
    var $CRLF = "\r\n";  # CRLF pair

    var $smtp_conn;      # the socket to the server
    var $error;          # error if any on the last call
    var $helo_rply;      # the reply the server sent to us for HELO

    var $do_debug;       # the level of debug to perform

    /*
     * SMTP()
     *
     * Initialize the class so that the data is in a known state.
     */
    function SMTP() {
        $this->smtp_conn = 0;
        $this->error = null;
        $this->helo_rply = null;

        $this->do_debug = 0;
    }

1 Ответ

0 голосов
/ 20 октября 2011

Я использую PHPMailer в разных проектах.

Я предлагаю вам отправлять письма через SMTP, конечно PHPMailer поддерживает это:

$mail = new PHPMailer();
$mail->IsSMTP();     // send via SMTP
$mail->Host = "smtp.gmail.com" //(or the smtp server you use)
$mail->Port = "465" //(gmail uses secure smtp so that runs on port 465)
$mail->SMTPAuth  = "true"   //we need to autenticate to the server
$mail->SMTPSecure = "ssl"  //we use ssl to protected the flow of info
$mail->Username = "mymail@gmail.com" //account 
$mail->Password = "password" //password


//build the message
 $mail->IsHTML(true);
$mail->From     = "mymail@gmail.com";
$mail->AddAddress("mymail@mydomain.com"); //who receives the mail
$mail->Subject  = "An HTML Message";
$mail->Body     = "Hello, <b>my friend</b>! \n\n This message uses HTML entities!";

if($mail->Send()) {
  echo 'Message is sent';

} 
else {
  echo 'Message was not sent..';
 echo 'Mailer error: ' . $mail->ErrorInfo;
}
...