使用PHPMailer发送纯文本电子邮件

20

我使用PHPMailer发送纯文本邮件时遇到问题。

我从文本文件中读取文本,并通过PHPMailer将其发送给邮件收件人

当收件人收到实际邮件时,邮件的格式与文本文件中的格式不同,所有内容都在一行中,没有包含换行符和制表符。文本换行完全失效。

代码:

        $mail->ContentType = 'text/plain'; 
        $mail->IsHTML(false);
        $address = "test@test.com";
        $mail->AddAddress($address, "John Doe");

        $mail->SetFrom(EMAIL_TEST_FROM);

        $mail->AddReplyTo(EMAIL_TEST_REPLY);



        $mail->Subject = $action." REGISTRATION ".$formName.$tld;
        $mail->From = EMAIL_TEST;  

        $mail->MsgHTML(file_get_contents($newFile));


        if($mail->Send()){
            return true;
        }

这是一个域名注册文件,whois.co.za,但问题已经解决。谢谢詹姆斯。 - Elitmiar
你可以将 if($mail->Send()) 简化为 return $mail->Send(); - Melebius
3个回答

26

您正在将$mail->MsgHTML()设置为纯文本消息,由于在HTML中忽略空格格式,因此您会得到一个内联文本。

我已经有一段时间没有使用PHPMailer了,但是从记忆中尝试:

$mail->Body = file_get_contents($newFile); 

13
    $mail->ContentType = 'text/plain'; 
    $mail->IsHTML(false);
    $address = "test@test.com";
    $mail->AddAddress($address, "John Doe");

    $mail->SetFrom(EMAIL_TEST_FROM);

    $mail->AddReplyTo(EMAIL_TEST_REPLY);



    $mail->Subject = $action." REGISTRATION ".$formName.$tld;
    $mail->From = EMAIL_TEST;  

    // Very important: don't have lines for MsgHTML and AltBody 
    $mail->Body = file_get_contents($mailBodyTextFile);  
    // $mail->Body = $_POST["msg"];  //If using web mail form, use this line instead.


    if($mail->Send()){
        return true;
    }

2
+1 是为了解释应该排除哪些行以及包含哪些行来触发纯文本模式。 - squarecandy

1
尝试以下代码,它可以正常工作:

Try below code which works fine:

        try {
            $mail->AddAddress('jitpal@domain.com', 'Jit Pal');
            $mail->SetFrom('testuser@domain.com', 'Test User');
            $mail->Subject = "All machine's tests.";
            $mail->Body = "All machine's tests working fine.";
            $mail->Send();
            echo "<br/>Message sent successfully...<br/><br/>\n";
        } catch (phpmailerException $e) {
            echo $e->errorMessage();
        } catch (Exception $e) {
            echo $e->getMessage();
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接