我使用php curl()函数从服务器A连接到邮件服务器B来发送邮件。
$body = "body\n\nmore body\nmore body\n\nmore body\n\n";
$post = [
'sendera' => $sender,
'sender_name' => $sender_name,
'subject' => $subject,
'body' => $body,
'recipient' => $email,
'recipient_name' => $name,
'replyto' => $replyto
];
$ch = curl_init('http://example-mailserver.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
curl_close($ch);
邮件已成功发送,但有2个问题。
问题N 1
邮件到达没有换行符,因此,所有\ n只是纯文本。从来没有遇到此问题从同一台服务器发送邮件。现在,当我使用 curl()发送时,会出现此问题。邮件服务器已安装 php7 。这应该是 php7 还是 curl()问题?
问题N 2
邮件在没有主题行的情况下到达,但是当脚本运行时存在 $ subject 变量,我在调用PHPMailer()函数之前通过发送一个更简单的邮件来检查它。
那么,为什么PHPMailer会忽略 $ subject?我从来没有在php5的服务器A上遇到过这个问题。
mail('my@email', 'check if subject exists', $subject);
上面的邮件以$ subject变量到达。但是之后用phpmailer发送的邮件没有主题行。
$mail=new PHPMailer();
$mail->IsMail();
$mail->WordWrap = 0;
$mail->SingleTo = true;
$mail->IsHTML(false);
$mail->CharSet = "utf-8";
$mail->From = $sender;
$mail->FromName = $sender_name;
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress($recipient,$recipient_name);
$mail->AddReplyTo(#replyt,"No-Reply");
答案 0 :(得分:1)
问题没有。 1可能是由于您正在使用的换行符。 \n
只是完整换行符的两个元素之一,它是一个新行'。某些邮件系统/服务器需要完整的换行符, \r\n
,\r
在这种情况下是“回车”,第二个元素全线休息。
问题没有。 2 ...首先关闭:$subject
中的内容是什么?
答案 1 :(得分:0)
主题问题
我安装了最新版本的phpmailer,而不是我有主题。
换行
我用单引号 $ body :
mData.get(holder.position)
我将其更改为:
body = 'this is body\r\n\r\nmore body';
现在一切都好。