PEAR PHP рассылка с именем от отправителя - PullRequest
2 голосов
/ 24 июня 2011

Я использую PEAR smtp mailer на PHP, и он отлично работает с вложениями CC и BB, а также с несколькими получателями. Моему боссу нужно, чтобы отправитель произнес имя отправителя при отправке на электронную почту. Наши торговые представители говорят, что это необходимо. Я пытался следовать указаниям, но когда я использую код ниже, электронное письмо не отправляется. Я предполагаю, что все типы электронной почты в почтовой программе должны быть написаны в одном формате. Например

 //GET EMAIL OF USER
        $result = mysql_query("SELECT email, email_pass, fullname FROM u_perinfo WHERE user_id = '$_SESSION[uid]'")
        or die("There was an error when grabbing your email information");
        if(mysql_num_rows($result) > 0){
            $row = mysql_fetch_array($result);
            if($row[0] != ''){
                $from = "$row[2] <$row[0]>";
            }
            $email_pass = $row[1];
        }

        if(!empty($additional)){
            $email .= ", $additional";
        }

        $recipients = array();
        $headers["Subject"] = $subject;
        $headers["From"] = "$from";
        $headers["To"] = "$email";
        $headers["Cc"] = "$cc";
        $headers["Bcc"] = "$bcc";

будет производить John Doe <johndoe@gmail.com> для переменной from, тогда как строка $from = "$row[2] <$row[0]>;";, повернутый к $from = $row[0], даст johndoe@gmail.com Делая это позже (только с электронной почтой), он отправляет информацию и работает отлично. При попытке включить имя это не работает вообще. Я делаю что-то неправильно? Любая помощь будет принята с благодарностью.

ОБНОВЛЕНИЕ : это мой почтовый код, который вы запросили

$crlf = "\n";
        $mime = new Mail_mime($crlf);
        // Setting the body of the email
        $mime->setTXTBody($mailmsg);
          $mime->setHTMLBody($mailmsg);                                           body = $mime->get();
        $headers = $mime->headers($headers);

        //$mailmsg = "Welcome to Addatareference.com! \r\n\r\nBelow is your unique login information.  \r\n\r\n(Please do not share your login information.)$accountinfo";
        /* SMTP server name, port, user/passwd */
        $smtpinfo["host"] = "smtp.emailsrvr.com";
        $smtpinfo["port"] = "25";
        $smtpinfo["auth"] = true;
        $smtpinfo["username"] = "$from";
        $smtpinfo["password"] = "$email_pass";
        /* Create the mail object using the Mail::factory method */
        $mail_object =& Mail::factory("smtp", $smtpinfo);
        /* Ok send mail */
        $mail_object->send($recipients, $headers, $body);

Ответы [ 3 ]

3 голосов
/ 01 апреля 2014

Моя проблема заключалась в том, что имя должно быть заключено в кавычки следующим образом:

$from = '"Mywebsite.com" <noreply@mywebsite.com>';

если NAME содержит () <> @,; \: ". Строка должна быть заключена в кавычки

Надеюсь, это кому-нибудь поможет;)

2 голосов
/ 24 июня 2011

Вы должны использовать

$from = $row[2]." <".$row[0]."> ";

вместо

$from = "$row[2] <$row[0]>;";

Также это может быть проблема с двойной точкой с запятой.Используйте только одну точку с запятой в конце.

0 голосов
/ 24 июня 2011

Добавить еще один заголовок:

$fullName = $row[2];
$headers["X-Sender"] = "<$fullName>";
...