如何为Moodle配置Mailgun?

时间:2016-11-18 14:36:39

标签: email moodle mailgun

Mailgun与Moodle一起使用的正确配置是什么?我在Google Cloud上使用Bitnami Moodle图像。

  • SMTP主机:smtp.mailgun.org

  • SMTP安全:无

  • SMTP验证类型:登录

  • SMTP用户名:poastmaster@mymgdomain.com
  • SMTP密码:Aslistedintheaccountdetails

我收到此错误消息。

发送密码更改确认电子邮件时出错

有关此错误的详细信息

调试信息: 错误代码:cannotmailconfirm 堆栈跟踪: /lib/setuplib.php的第495行:抛出moodle_exception /login/lib.php的第110行:调用p​​rint_error() /login/forgot_password.php的第81行:调用core_login_process_password_reset_request() 输出缓冲区:

 2016-11-18 14:21:25    Connection: opening to smtp.mailgun.org:25, timeout=300, options=array ( ) 2016-11-18 14:23:32  SMTP ERROR: Failed to connect to server: Connection timed out (110) 2016-11-18 14:23:32 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting 

3 个答案:

答案 0 :(得分:1)

  

Google Compute Engine不允许端口25,465和587上的出站连接。默认情况下,这些出站SMTP端口会被阻止,因为这些端口容易受到大量滥用。

端口25出站是blocked on Google Cloud。 Mailgun mirrors 587, on port 2525 - 所以尝试使用端口2525。

作为快速测试,您还可以尝试从命令行远程登录以检查连接,如下所示:

> telnet smtp.mailgun.org 2525

答案 1 :(得分:0)

您应尝试使用端口465代替端口25,并将加密设置为SSL

我个人没有使用moodle,但我相信你可以这样做: UPDATE mdl_config SET value='ssl://smtp.mailgun.org:465' WHERE name='smtphosts';

答案 2 :(得分:0)

我刚刚在数字海洋上的服务器中做到了这一点。所以这里的解决方案:

  • 配置您的 DNS 并在 mailgun 应用程序上进行检查;
  • 在凭据中获取您的 smtp 密码;
  • SMTP 主机:smtp.mailgun.org:587
  • SMTP 安全:tls
  • SMTP 身份验证类型:登录
  • SMTP 用户名:poastmaster@
  • SMTP 密码:

这里的诀窍是端口 587。我尝试了所有方法,但仅此而已。作为奖励,如果您可以通过 ssh 访问您的服务器,您可以通过以下方式从终端发送电子邮件:

./swaks --auth \
    --server smtp.mailgun.org:587 \
    --au postmaster@<yourdomain> \
    --ap <smtpcredential> \
    --to anyemail@youwantosend.com \
    --h-Subject: "Teste Moodle" \
    --body 'Testing some Mailgun awesomness!'

而且,当你运行moodle时,如果你想对php做同样的事情:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

$mail = new PHPMailer;

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.mailgun.org:587';                 // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'postmaster@moodle.gpematec.com.br';     // SMTP username
$mail->Password = '<your credetials>';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable encryption, only 'tls' is accepted

$mail->From = 'youremail@yourdomain.com';
$mail->FromName = 'You';
$mail->addAddress('anyemail@youwantosend.com');                 // Add a recipient

$mail->WordWrap = 50;                                 // Set word wrap to 50 characters

$mail->Subject = 'PHP subject';
$mail->Body    = 'Email from php!';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
?>