标签: swiftmailer

将SwiftMailer注入symfony2服务

我有一个扩展UserManager的服务,所以当我这样做时:

$message = \Swift_Message::newInstance()
            ->setSubject('~')
            ->setFrom('~')
            ->setTo('~')
            ->setBody('~', 'text/html');
        $this->get('mailer')->send($message);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Fatal error: Call to undefined method My\MyBundle\Service\ServiceClass::get()
Run Code Online (Sandbox Code Playgroud)

我知道这是因为我需要将swiftmailer注入这里,但是如何?(通常服务类扩展'Generic',因此包含了swift邮件程序.)

dependency-injection swiftmailer symfony

11
推荐指数
1
解决办法
1万
查看次数

使用Swift Mailer,GMail和PHP发送电子邮件,权限被拒绝错误

我下载了SwiftMailer 4.1.6,用于使用Gmail发送电子邮件.我为此目的编写了以下代码.

<?php

require_once 'swiftmailer/lib/swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
        ->setUsername('jomit.jmt@gmail.com')
        ->setPassword('***********');

$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('Wonderful Subject')
        ->setFrom(array('jomit.jmt@gmail.com' => 'Jomit Jose'))
        ->setTo(array('jomit.jmt@gmail.com' => 'Jomit Jose'))
        ->setBody('This is the text of the mail send by Swift using SMTP transport.');

$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
Run Code Online (Sandbox Code Playgroud)

并导致以下错误:

Fatal error: Uncaught exception 'Swift_TransportException' with message 
'Connection could not be established with host smtp.gmail.com 
[Permission denied #13]' in 
/home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:266 

Stack trace: 

#0 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php(66): 
Swift_Transport_StreamBuffer->_establishSocketConnection() 

#1 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(117):   
Swift_Transport_StreamBuffer->initialize(Array) 

#2 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Mailer.php(79): 
Swift_Transport_AbstractSmtpTransport->start() 

#3 …
Run Code Online (Sandbox Code Playgroud)

php email gmail swiftmailer

10
推荐指数
1
解决办法
6767
查看次数

在Symfony2 dev env控制器中捕获swiftmailer异常

我不知道为什么我没有在我的控制器中捕获Swiftmailer的异常.我做错了什么,或者错过了什么?

在控制器中我有:

try {
    $this->get('mailer')->send($email);
}
catch (\Swift_TransportException $e) {
    $result = array(
        false, 
        'There was a problem sending email: ' . $e->getMessage()
    );
}
Run Code Online (Sandbox Code Playgroud)

在它到达我的代码之前它似乎被Symfony抓住了,所以我没有能够自己处理错误,而是获得标准的500页 Swift_TransportException: Connection could not be established

如果无法发送电子邮件,则不需要暂停应用程序,因为电子邮件并不重要 - 我只是想发出通知.

也许有办法禁用Symfonys捕获某些异常或某些控制器?

swiftmailer symfony

10
推荐指数
1
解决办法
4484
查看次数

Swift Mailer - 无法发送邮件,也找不到错误日志

PHP和Swiftmailer的新手,还没有让它工作.我已将/ lib /目录上传到Hostgator共享Web服务器根目录中的目录.我在/ lib /上面的目录中上传了以下内容:

<?php
        require_once 'lib/swift_required.php';

$transport = Swift_SmtpTransport::newInstance('mail.****.com', 25)
    ->setUsername('****@****.com')
    ->setPassword('****');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance('Subject Here')
    ->setFrom(array('****@****.com' => '****'))
    ->setTo(array('****@****.com' => '****'));

    $message->setBody('This is the message');

    if (!$mailer->send($message, $errors))
    {
        echo "Error:";
        print_r($errors);
    }
?>
Run Code Online (Sandbox Code Playgroud)

它不发送消息,但我也无法查看任何错误日志.我在php.ini的所有部分都启用了错误日志记录 - 但是当我尝试转到我在浏览器中上传.php文件的位置时,我收到404错误.当我通过ssh连接时,我有jailshell访问权限.当我试图去/var/log/php-scripts.log时,我没有得到许可.想知道我还能在哪里找到错误来修复它?

php swiftmailer

10
推荐指数
3
解决办法
2万
查看次数

使用Swift_Message发送邮件时如何更改发件人的名称文本?

我正在使用SwiftMailer从我的应用程序发送电子邮件.

到目前为止一切正常.我现在需要能够动态更改发件人的文本.下面的代码片段和下一段应该有希望澄清我的意思.

目前,我的代码如下所示:

try{
   $message = Swift_Message::newInstance()
               ->setFrom($from)
               ->setTo($to)
               ->setSubject($subject)
               ->setBody($content);

   $mailer->send($message);
}catch (Exception $e) {
   // do something ...
}
Run Code Online (Sandbox Code Playgroud)

$ from变量包含发件人的电子邮件地址 - 即sysmail@mydomain.com

但是,我想为不同的实体(例如论坛,组等)发送每日摘要(例如),因此我希望能够将发件人的姓名文本设置为"论坛ABC成员每日摘要",即使发件人仍然是sysmailer@mydomain.com.我注意到linkedin正在做类似的事情 - 他们在不同的发件人名下发送不同的摘要,即使发件人总是group-digests@linkedin.com.

sysmailer@mydomain.com的默认名称是"System Mailer".顺便说一句,我使用Google Apps作为我的邮件服务提供商.设置不同的用户帐户对我来说是不切实际的,因为用户可以创建自己的论坛等.

有没有一种方法可以动态地(即通过代码)指定发件人名称,尽管使用相同的发件人电子邮件地址?

php email swiftmailer

9
推荐指数
1
解决办法
6003
查看次数

如何在发送Yii2之前获取HTML电子邮件内容?

我想用跟踪器替换HTML电子邮件中的所有链接.据我所知,有这个EVENT_BEFORE_SEND事件.所以我创建了一些可以像下面这样使用的行为

$mailer = \Yii::$app->mailer;
/* @var $mailer \yii\mail\BaseMailer */
$mailer->attachBehavior('archiver', [
   'class' => \app\MailTracker::class
]);
Run Code Online (Sandbox Code Playgroud)

这是MyTracker班级的内容.

class MailTracker extends Behavior {
    public function events() {
        return [
            \yii\mail\BaseMailer::EVENT_BEFORE_SEND => 'trackMail',
        ];
    }

    /**
     * @param \yii\mail\MailEvent $event
     */
     public function trackMail($event) {
        $message = $event->message;

        $htmlOutput = $this->how_do_i_get_the_html_output();
        $changedOutput = $this->changeLinkWithTracker($htmlOutput);
        $message->getHtmlBody($changedOutput);
     }
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是\yii\mail\BaseMailer没有提供在发送之前获取HTML输出的方法.

这该怎么做?

UPDATE

我能做到这一点的唯一方法是通过这种黑客方式.

    /* @var $message \yii\swiftmailer\Message */
    if ($message instanceof \yii\swiftmailer\Message) {
        $swiftMessage = $message->getSwiftMessage();
        $r = new …
Run Code Online (Sandbox Code Playgroud)

php swiftmailer yii2

9
推荐指数
2
解决办法
3673
查看次数

如何在Yii2邮件程序中向多个收件人发送邮件或如何在yii2邮件程序中添加setCc

如何在Yii2邮件程序中向多个收件人发送邮件?

此代码适用于多个收件人但无法正常工作.

$value = Yii::$app->mailer->compose()
            ->setFrom([$this->email => $this->name])
            ->setTo(array($model->email_1,$model->email_2))
            ->setSubject($model->status)
            ->setHtmlBody($model->description)
            ->send();
Run Code Online (Sandbox Code Playgroud)

如何在yii2邮件程序中添加setCc?

此代码用于添加setCc,但这也无效.

$value = Yii::$app->mailer->compose()
            ->setFrom([$this->email => $this->name])
            ->setTo($model->email_1)
            ->setCc($model->email_2)
            ->setSubject($model->status)
            ->setHtmlBody($model->description)
            ->send();
Run Code Online (Sandbox Code Playgroud)

swiftmailer yii2

9
推荐指数
1
解决办法
1万
查看次数

laravel Mail :: failures()函数如何工作?

我一直试图获取没有使用laravel Mail::send()函数获取电子邮件的收件人列表.我正在尝试下面的代码.for循环用作因为每个用户都要收到自定义消息.

// First recipient is actual, the second is dummy.
$mail_to_users = ["original_account@domain.com","dummy_account@domain.com"];
$failures = [];

foreach($mail_to_users as $mail_to_user) {
   Mail::send('email', [], function($msg) use ($mail_to_user){
     $msg->to($mail_to_user);
     $msg->subject("Document Shared");
   });

   if( count( Mail::failures() ) > 0 ) {
      $failures[] = Mail::failures()[0];
   }
}

print_r($failures);
Run Code Online (Sandbox Code Playgroud)

我一直在尝试所有可能的选择.我将正确的邮件配置更改为错误的邮件配置config/mail.php.但是,如果我这样做,那么laravel显示错误页面,但$failure变量总是返回空.

php email swiftmailer laravel laravel-4

9
推荐指数
1
解决办法
1万
查看次数

Laravel电子邮件,队列550错误(每秒电子邮件太多)

我们的电子邮件无法使用Redis Queue使用Laravel发送.

触发错误的代码是: ->onQueue('emails')

$job = (new SendNewEmail($sender, $recipients))->onQueue('emails');
$job_result = $this->dispatch($job);
Run Code Online (Sandbox Code Playgroud)

结合这项工作:

use InteractsWithQueue;
Run Code Online (Sandbox Code Playgroud)

我们的错误信息是:

Feb 09 17:15:57 laravel: message repeated 7947 times: [ production.ERROR: exception 'Swift_TransportException' with message 'Expected response code 354 but got code "550", with message "550 5.7.0 Requested action not taken: too many emails per second "' in /home/laravel/app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:383 Stack trace: #0 /home/laravel/app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(281): 
Run Code Online (Sandbox Code Playgroud)

我们的错误只发生在使用Sendgrid而不是Mailtrap,这会欺骗电子邮件发送.我和Sendgrid谈过,电子邮件从未触及他们的服务器,当我的错误发生时,他们的服务完全处于活动状态.所以,错误似乎在我的最后.

有什么想法吗?

php smtp swiftmailer laravel laravel-forge

9
推荐指数
3
解决办法
1万
查看次数

swiftmailer/swiftmailer 软件包已被废弃,您应该避免使用它。使用 symfony/mailer 代替

对于这种情况,我无法安装 breez 和 npm。我应该怎么做才能解决这个问题?当我要创建一个 laravel 项目时,也显示这个和 breez 安装时间。

控制台屏幕

swiftmailer laravel

9
推荐指数
1
解决办法
4万
查看次数