首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MailSo库通过SMTP发送电子邮件

如何使用MailSo库通过SMTP发送电子邮件
EN

Stack Overflow用户
提问于 2018-01-11 04:10:14
回答 1查看 248关注 0票数 0

使用名为MailSo的PHP库,我很难通过SMTP发送多部分MIME消息。假设有两个例子是有限的。没有文字说明如何创建标题,邮件正文,多部分MIME邮件本身,然后发送它。

当前的webmail (Rainloop)是在MailSo上运行的,我想避免在MailSo上使用第三方库。接下来,所有电子邮件操作都存储在Rainloop Actions.php文件中。

基于此,要创建多部分MIME邮件,我应该创建$oMessage对象(\MailSo\Mime\Message),我可以部分地添加主题、邮件ID、自定义标头、邮件正文文本,但进一步我无法设置MIME边界(将原始邮件正文存储为边界以及附加内容类型为文本/纯文本),而不是讨论通过$oMessage发送SMTP对象。

到目前为止,我的测试代码如下:

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-20 05:31:35

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

下面的示例代码

代码语言:javascript
复制
        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);
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48195308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档