5

PHPMailer クラスを使用して送信されるメーリングで送信される名前の設定に問題があります。

php の組み込みmail()関数と同様の方法で使用できるように、次の関数を作成しました。

function pmail($to, $subject, $message, $headers = "", $attachments = "")
{
    date_default_timezone_set('Europe/London');

    require_once($_SERVER['DOCUMENT_ROOT']."/lib/inc/class.phpmailer.php");
    //include($_SERVER['DOCUMENT_ROOT']."/lib/inc/class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

    $defaultEmail = "reply@example.com";
    $defaultEmailName = "Web Mailer";

    $mail = new PHPMailer();

    $mail->IsSMTP();                                // telling the class to use SMTP
    $mail->Host       = "mail.example.com";         // SMTP server
    $mail->SMTPDebug  = false;                      // enables SMTP debug information (for testing, 1 = errors and messages, 2 = messages only, false = off)
    $mail->SMTPAuth   = true;                       // enable SMTP authentication
    //$mail->SMTPSecure = "tls";                    // sets the prefix to the servier
    $mail->Host       = "mail.example.com";         // sets the SMTP server
    $mail->Port       = 25;                         // set the SMTP port for the GMAIL server
    $mail->Username   = "###";                      // SMTP account username
    $mail->Password   = "###";                      // SMTP account password
    $mail->SetFrom( ($headers['fromEmail'] != "" ? $headers['fromEmail'] : $defaultEmail), ($headers['fromName'] != "" ? $headers['fromName'] : $defaultEmailName) );
    $mail->AddReplyTo( ($headers['replyToEmail'] != "" ? $headers['replyToEmail'] : $defaultEmail), ($headers['replyToName'] != "" ? $headers['replyToName'] : $defaultEmailName) );
    $mail->AddAddress($to);
    $mail->Subject = $subject;
    $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
    $mail->MsgHTML($message);

    foreach($attachments as $attachment) {
        //$mail->AddAttachment("images/phpmailer.gif");      // attachment example
        $mail->AddAttachment($attachment);
    }

    if(!$mail->Send()) {
        //echo "Mailer Error: ".$mail->ErrorInfo;
        return false;
    } else {
        //echo "Message sent!";
        return true;
    }
}

そのようなものでテストするとき;

pmail("test@test.com", "test email", "test message here");

すべて正常に動作し、送信元アドレスはreply@example.com期待どおりにヘッダーに表示されますが、受信者の受信トレイに表示される名前は、Web Mailer資格情報を使用して電子メールを送信するユーザーに関連付けられているデフォルトのアカウントではありません。ヘッダーでは、送信者名は Web Mailer として表示されますが、それを表示したいのは受信トレイです

システムに追加のユーザー アカウントを設定して、希望の名前と電子メールで新しいアカウントを作成することはできないため、既存のユーザー アカウントを介して送信する必要があります。この場合、私のメールには私の名前が添付されて送信されますが、名前が Web Mailer として表示されるようにしたいと考えています。

これは可能ですか?

4

4 に答える 4

5

私の機能は意図したとおりに機能することがわかりました。私はこのシステムから内部アドレスに電子メールを受信して​​いたため、アドレス帳に自動的に登録されていました。したがって、電子メールの送信に使用されたアドレスは私の個人アドレスに関連付けられていたため、「Web Mailer」ではなく私の名前が表示されました。

外部の電子メール アカウントでテストすると、送信者の名前が正しく表示されます。

于 2013-01-08T14:31:44.360 に答える
2

私はかつてこのphpコードを使用しましたが、うまくいきました:(私のgmail資格情報ではなく、以下のものを表示しました)

$headers = "From: Cartrader UK <noreply@cartrader.co.uk";

. . .

if (mail($to, $subject, $msg, $headers)) {
echo "Mail sent successfully";
} else {
echo "There was some problem sending the E-Mail";
}

多分それはあなたを助けます。

編集: SetFrom を使用して行を次のように変更してみます:

$mail->SetFrom($defaultEmail,$defaultEmailName);
于 2013-01-07T14:42:16.410 に答える