使用名为MailSo的PHP库,我很难通过SMTP发送多部分MIME消息。假设有两个例子是有限的。没有文字说明如何创建标题,邮件正文,多部分MIME邮件本身,然后发送它。
当前的webmail (Rainloop)是在MailSo上运行的,我想避免在MailSo上使用第三方库。接下来,所有电子邮件操作都存储在Rainloop Actions.php文件中。
基于此,要创建多部分MIME邮件,我应该创建$oMessage对象(\MailSo\Mime\Message),我可以部分地添加主题、邮件ID、自定义标头、邮件正文文本,但进一步我无法设置MIME边界(将原始邮件正文存储为边界以及附加内容类型为文本/纯文本),而不是讨论通过$oMessage发送SMTP对象。
到目前为止,我的测试代码如下:
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);发布于 2018-01-20 05:31:35
好了,我已经知道如何发送使用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);
}
}https://stackoverflow.com/questions/48195308
复制相似问题