繁体   English   中英

如何使用MailSo库(PHP)通过SMTP发送电子邮件

[英]How to send email via SMTP using MailSo library (PHP)

我很难使用称为MailSo的 PHP库通过SMTP发送多部分MIME消息。 提供两个示例是有限的。 没有关于如何创建标头,消息正文,多部分MIME消息本身然后发送的消息。

当前的Webmail(Rainloop)正在MailSo上运行,我想避免在MailSo上使用第3方库。 今后,所有电子邮件操作都存储在Rainloop Actions.php文件中。

基于此,创建多部分的MIME消息,我应该创建$oMessage对象( \\MailSo\\Mime\\Message ),并且能够部分完成此操作,例如添加主题,消息ID,自定义标头,消息正文文本,但我会进一步m无法设置MIME边界(将原始邮件正文作为边界以及其他内容类型作为文本/纯文本存储),而不是通过SMTP发送$oMessage对象。

到目前为止,这是我的测试代码:

include 'lib/MailSo/MailSo.php';

echo '<pre>';
$oLogger = \MailSo\Log\Logger::SingletonInstance()
    ->Add(\MailSo\Log\Drivers\Inline::NewInstance("\r\n", true))
;

$sToEmails = 'Me As Tester <tester@test.com>';
$oToEmails = \MailSo\Mime\EmailCollection::NewInstance($sToEmails);

$sFromEmails = 'Baba Ganush <no-replay@test.com>';
$oFromEmails = \MailSo\Mime\Email::NewInstance($sFromEmails);

$oMessage = \MailSo\Mime\Message::NewInstance();
$oMessage->RegenerateMessageId();

$oMessage->SetXMailer('RainLoop/1.0.0');

$oMessage->SetCustomHeader('test-header','test-header-value');

$oMessage->setSubject("Test message");
$oMessage->AddText('Generated message body goes here...');

$oMessage->SetFrom($oFromEmails);
$oMessage->SetTo($oToEmails);

$oLogger->WriteDump($oMessage);

好吧,我已经弄清楚了如何发送使用MailSo库创建的电子邮件(目前没有任何附件)

下面的示例代码

        if($oMessage){
            $rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
            $iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter($oMessage->ToStream(true), array($rMessageStream), 8192, true, true, true);
        }

        $aToCollection = $oMessage->GetTo();
        if ($aToCollection && $oFrom)
        {
            $sRawBody = @stream_get_contents($rMessageStream);

            if (!empty($sRawBody))
            {
                $sMailTo = trim($aToCollection->ToString(true));
                $sMailSubject = trim($oMessage->GetSubject());
                $sMailSubject = 0 === strlen($sMailSubject) ? '' : \MailSo\Base\Utils::EncodeUnencodedValue(\MailSo\Base\Enumerations\Encoding::BASE64_SHORT, $sMailSubject);
                $sMailHeaders = $sMailBody = '';
                list($sMailHeaders, $sMailBody) = explode("\r\n\r\n", $sRawBody, 2);
                unset($sRawBody);
                $sMailHeaders = \MailSo\Base\Utils::RemoveHeaderFromHeaders($sMailHeaders, array(\MailSo\Mime\Enumerations\Header::TO_,\MailSo\Mime\Enumerations\Header::SUBJECT));
                mail($sMailTo, $sMailSubject, $sMailBody, $sMailHeaders);
            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM