我有一个旧系统和一个正在开发的新系统:
在旧系统中,我使用 crontab 和 swiftmailer 发送新闻通讯。我编写了一个 PHP 脚本,它从数据库中读取邮件列表,并使用 swiftmailer+smtp 将电子邮件发送到整个列表,每组电子邮件之间有延迟,以确保我不会使服务器超载(swift mailer 在 Swift_Plugins_AntiFloodPlugin 下有此脚本) )。
我还编写了另一个脚本,该脚本将扫描我发送的地址以查找传入电子邮件,查找失败通知等,并匹配地址以清除数据库中不活动的电子邮件(即,如果您将电子邮件发送到不活动的地址)不存在,您收到一封带有错误消息的邮件,我从内容中提取了地址并将其从数据库中删除)。
这种方法每天处理超过 40K 封电子邮件。就像魅力一样。
在我正在编写的新系统中,我正在使用代码点火器。code igniter 的内置邮件功能似乎工作正常,只缺少一件事:是否可以在发送之间添加延迟?
我知道将 swiftMailer 库添加到我的 CI 项目中很简单,但在我这样做之前,可以使用 CI 邮件函数来完成此操作吗?独自的?在这种情况下添加 swift mailer 还有其他优点吗?
我知道很多人会建议使用为批量电子邮件构建的东西,但 PHP CLI 就像这种情况下的任何其他编程语言一样(我知道 mailman、majordomo 和 mailchip 等服务。我可以在 php 中使用多线程处理sysdaemons 和 mod_fork 等需要时,但这与问题无关)。
编辑:
解决了
尽管我已经添加了 swift 邮件程序(这花了几分钟), @JaredFarish 建议的Sparks似乎是解决方案,因为它是为 CI 设计的。
我用来SwiftMailer发送电子邮件,但我在UTF-8主题方面遇到一些编码问题。Swiftmailer 默认使用QPHeaderEncoder对电子邮件标头进行编码,并且 safeMap 看起来对某些UTF-8法语字符存在一些问题。我使用的一个主题包含单词 trouv\xc3\xa9 (在法语中找到),当该主题到达用户时,它会显示 trouv。
我想使用类似于NativeQPContentEncoder可用作内容编码器的东西,但对于标题只有Base64和Quoted Printable编码器。
有没有办法解决这个问题,也许我做错了什么,所以我将我正在使用的代码粘贴到这里
\n\n$message = Swift_Message::newInstance()\n\n// set encoding in 8 bit\n->setEncoder(Swift_Encoding::get8BitEncoding())\n\n// Give the message a subject\n->setSubject($subject)\n\n// Set the From address with an associative array\n->setFrom(array($from => $niceFrom))\n\n// Set the To addresses with an associative array\n->setTo(array($to)) ;\nRun Code Online (Sandbox Code Playgroud)\n 在 Symfony 2.5.5 和 Swiftmailer 5.3.0 中出现此异常。我完全按照食谱的例子。调用时抛出错误MessageDataCollector#getMessages():
// Check that an e-mail was sent
$this->assertEquals(1, $mailCollector->getMessageCount());
$collectedMessages = $mailCollector->getMessages();
$message = $collectedMessages[0];
Run Code Online (Sandbox Code Playgroud)
消息计数断言也失败,值为零。
据我所知,收集者没有在行动中进行任何实际的收集。有任何想法吗?
我正在使用并且正在使用基本邮件程序类Yii 2中的邮件程序,并且在大多数情况下它工作正常,但有时无法发送......所以我的代码如下:
// Let's start composing the message
$mail = Yii::$app->mailer->compose($view_data, $view_params);
//.........
// Send the message
$send = $mail->send();
Run Code Online (Sandbox Code Playgroud)
有时$send是,false但我不确定你如何找出它为什么是假的?有没有办法得到使它变成假的错误?
我有一个带有 Swift Mailer 的 Silex 应用程序,但似乎没有从$app['swiftmailer.options'].
我在引导文件中注册了该服务
$app->register(new SwiftmailerServiceProvider());
Run Code Online (Sandbox Code Playgroud)
在我的配置文件中
$app['swiftmailer.options'] = array(
'host' => 'smtp.mandrillapp.com',
'port' => '587',
'username' => 'MY_USERNAME',
'password' => 'MY_PASSWORD',
'encryption' => null,
'auth_mode' => null
);
Run Code Online (Sandbox Code Playgroud)
然后我发送我的电子邮件
$message = \Swift_Message::newInstance()
->setSubject($this->app['forum_name'] . ' Account Verification')
->setFrom(array('no-reply@domain.com'))
->setTo(array('recipient@example.com'))
->setBody('My email content')
->setContentType("text/html");
$this->app['mailer']->send($message);
Run Code Online (Sandbox Code Playgroud)
send 函数返回,1但电子邮件从未发送过。但是,当我尝试手动创建 的实例时Swift_SmtpTransport,电子邮件会发送。
$transport = \Swift_SmtpTransport::newInstance('smtp.mandrillapp.com', 587)
->setUsername('MY_USERNAME')
->setPassword('MY_PASSWORD');
...
$mailer = \Swift_Mailer::newInstance($transport);
$mailer->send($message);
Run Code Online (Sandbox Code Playgroud)
所以问题是$app['swiftmailer.options']没有读取或加载。我在这里错过了什么吗?
我正在按照此处的说明进行操作。
尝试使用 swiftmailer 发送邮件时,出现以下错误:
Expected response code 250 but got code "550", with message "550 User test@test.com has exceeded its 24-hour sending limit. Messages to 250 recipients out of 250 allowed have been sent. Relay quota will reset in 1.47 hours.
Run Code Online (Sandbox Code Playgroud)
我已将 swiftmailer 放在 try catch 块中,如下所示:
public function sendMail($emailTemplateName, $subject, $body, $fromEmail, $toEmail)
{
try
{
return Yii::$app->mailer->compose(['html' => $emailTemplateName], ['emailBody' => $body])
->setFrom([ $fromEmail => Yii::$app->params['siteTitle'] ])
->setTo($toEmail)
->setSubject($subject)
->send();
}
catch(Swift_SwiftException $exception)
{
return 'Can sent mail due …Run Code Online (Sandbox Code Playgroud) 我正在处理一个 symfony 项目,我有一个表格,必须使用 swiftmailer 发送邮件。为了说明 -> 用户可以在表单的可选文件的上传功能中使用附件。(表单保存在bdd like命令中,提交表单后我们有一个回顾,还有3封邮件(我们不使用附件的两封邮件每次都有效,只有带有附件选项的邮件在我们有一个文件要加入,否则如果我们只使用评论(另一个像路径一样工作的字段可选,邮件正在工作)
我希望我的解释清楚易懂,我的英语不完美,功能也不太容易。由于某些信息的机密性,我只在这里写了与邮件有关的代码,但如果我忘记了某些信息,请告诉我并更新帖子。
当我发送没有附件的邮件时,我没有任何问题,它可以正常工作,但是当我尝试加入文件时,symfony 给我这个错误:
无法打开文件进行阅读 [uploads/6M.jpg]
我试图在 StackOverflow 的其他帖子上找到解决方案,但没有人在工作。所以我会让你帮助我,我希望。
命令实体(我只是将有关文件、路径和上传的代码放在附件中(邮件程序的其余部分/和代码工作):
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Form\Extension\HttpFoundation;
/**
* Commandes
*/
class Commandes
{
// CUSTOM CODE
/**
* @var string
*/
public $file3;
/**
* @var string
*/
protected $path3;
public function getAbsolutePath1()
{
return null === $this->path1 ? null : $this->getUploadRootDir().'/'.$this->id.'.'.$this->path1;
}
public function getWebPath1()
{
return null === $this->path1 ? null : $this->getUploadDir().'/'.$this->path1;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Yii2 中使用 Swift Mailer。
我的主持人是 Godaddy,我正在尝试使用 gmail 帐户发送电子邮件。
该代码似乎工作正常,但是当我尝试使用它时,我收到错误消息:无法与主机 smtp.gmail.com 建立连接 [连接被拒绝 #111]
我仔细检查了我使用的 gmail 凭据是否正确。这可能是我的主机的问题,如果是,有办法解决吗?这是代码
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
'host'=>'smtp.gmail.com',
'username'=>'myUserName@gmail.com',
'password'=>'******',
'port'=>'587',
'encryption'=>'tls',
],
'useFileTransport' => false, //for the testing purpose, you need to enable this
],
I also tried with **`'class' => 'Swift_MailTransport',`**
but the error was not resolved.
The error is
Run Code Online (Sandbox Code Playgroud)
无法与主机 smtp.gmail.com 建立连接 [连接被拒绝 #111]
请在这方面帮助我。谢谢,
我正在尝试在我的 Laravel 应用程序中设置电子邮件,我的 env 文件是这样的:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=noreply@xxx.com
MAIL_PASSWORD=xxx
MAIL_ENCRYPTION=tls
Run Code Online (Sandbox Code Playgroud)
我根据这个问题中给出的答案尝试了预期响应代码 250 但得到代码“535”,消息“535-5.7.8 用户名和密码不被接受
我按照步骤,启用了两步验证,然后创建了应用程序密码并配置了我的.env文件
最后我做到了 php artisan config:cache
无法使用 3 个可能的身份验证器在用户名为“noreply@xxx.com”的 SMTP 服务器上进行身份验证。身份验证器登录返回 Swift_TransportException:预期响应代码 235,但得到代码“534”,消息为“534-5.7.14
这个你能帮我吗。谢谢。
我已经从旧服务器迁移到新服务器。新服务器有相当大的变化。旧服务器使用 PHP5.6和 phalcon 3.2,新服务器使用 PHP7.3和 phalcon 3.4.4。
在旧服务器电子邮件发送工作顺利,但在新服务器中,它抛出以下错误:
Swift_TransportException:无法使用 TLS 加密连接
两个站点中的服务器邮件配置为:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
Run Code Online (Sandbox Code Playgroud)
注意:旧站点已开启http,新站点已开启https
swiftmailer ×10
php ×8
email ×3
symfony ×3
yii2 ×3
codeigniter ×1
forms ×1
laravel ×1
laravel-mail ×1
mandrill ×1
phalcon ×1
phpunit ×1
profiler ×1
silex ×1
smtp ×1