PEAR::使用 DSN SMTP 服务的邮件

发布于 2024-12-18 16:55:46 字数 2619 浏览 2 评论 0原文

您知道是否可以使用 PHP 中的 Pear Mail 功能设置 DSN 通信?

解释: 如果在 telnet 会话中写入此代码:

telnet smtp.example.com 25
[...]
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected] NOTIFY=SUCCESS,FAILURE,DELAY ORCPT=rfc822;[email protected]
250 2.1.5 Ok
[]

当我的 smpt 服务器发送电子邮件时,我收到一封通知邮件,其中包含来自接收方 smtp 服务器的状态代码(已中继、失败等)。现在我想使用 Pear Mail 执行相同的操作,但我找不到放置此选项的位置。

这是我的代码:

$messageTEXT= "..." // text_message
$messageHTML="..." // html message

$headers=array();
$headers['From'] = "[email protected]";
$headers['To'] = "[email protected]";
$headers['Subject'] = "Test mail"; 
$headers['X-Mailer']="My PHP mailer";
$headers['X-Priority']=3;
$headers['Errors-To'] = "[email protected]";
$headers['Return-Path'] = "[email protected]";
$headers['Disposition-Notification-To'] =  "[email protected]";

$message = new Mail_mime();
$message->setTXTBody($messageTEXT);
$message->setHTMLBody($messageHTML);

$mimeparams=array();
$mimeparams['charset']= "UTF-8";
$mimeparams['text_encoding']="8bit";
$mimeparams['text_charset']="UTF-8";
$mimeparams['html_charset']="UTF-8";

$body = $message->get($mimeparams);

$headers = $message->headers($headers);

$smtp = Mail::factory(
   'smtp', 
    array(
        'host' => "smtp.example.com", 
        'port' => "25", 
        'auth' => true, 
        'username' => "myuser", 
        'password' => "mypass")
);

$mail=$smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    print ("Error");
    return false;
}

http://pear.php.net/manual/ en/package.mail.mail.php

Do you know if it is posible to set a DSN communication using the Pear Mail function in PHP?

Explain:
If a write this code in a telnet session:

telnet smtp.example.com 25
[...]
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected] NOTIFY=SUCCESS,FAILURE,DELAY ORCPT=rfc822;[email protected]
250 2.1.5 Ok
[]

i received a notification mail with a status code from the receiver smtp server (relayed, failed, etc.) when my smpt server sends the email. Now i want to do the same using Pear Mail, but I can't find where i have tu put this option.

This is my code:

$messageTEXT= "..." // text_message
$messageHTML="..." // html message

$headers=array();
$headers['From'] = "[email protected]";
$headers['To'] = "[email protected]";
$headers['Subject'] = "Test mail"; 
$headers['X-Mailer']="My PHP mailer";
$headers['X-Priority']=3;
$headers['Errors-To'] = "[email protected]";
$headers['Return-Path'] = "[email protected]";
$headers['Disposition-Notification-To'] =  "[email protected]";

$message = new Mail_mime();
$message->setTXTBody($messageTEXT);
$message->setHTMLBody($messageHTML);

$mimeparams=array();
$mimeparams['charset']= "UTF-8";
$mimeparams['text_encoding']="8bit";
$mimeparams['text_charset']="UTF-8";
$mimeparams['html_charset']="UTF-8";

$body = $message->get($mimeparams);

$headers = $message->headers($headers);

$smtp = Mail::factory(
   'smtp', 
    array(
        'host' => "smtp.example.com", 
        'port' => "25", 
        'auth' => true, 
        'username' => "myuser", 
        'password' => "mypass")
);

$mail=$smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    print ("Error");
    return false;
}

http://pear.php.net/manual/en/package.mail.mail.php

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

数理化全能战士 2024-12-25 16:55:46

您必须对 PEAR::Mail 和 Net::SMTP 进行一些修改才能使其正常工作。

标准的 Mail_smtp::send() 方法调用 Mail_RFC822::parseAddressList() ,它将拒绝额外的数据。注释掉这些行(第 274 行左右)应该可以帮助您开始。

然后,您需要修改 Net_SMTP::rcptTo() 来传递原始数据,而不是将其放在尖括号中。

如果您想绕过这些方法,请确保您的数据在其他地方得到了清理。

You will have to hack PEAR::Mail and Net::SMTP a bit to get this to work.

The standard Mail_smtp::send() method calls into Mail_RFC822::parseAddressList() which will reject the extra data. Commenting out those lines (around line 274) should get you started.

Then you'll need to hack Net_SMTP::rcptTo() to pass the raw data rather than wrapping it in angle brackets.

Make sure your data is being sanitized somewhere else if you're going to circumvent those methods.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文