Mailgun与Moodle一起使用的正确配置是什么?我在Google Cloud上使用Bitnami Moodle图像。
SMTP主机:smtp.mailgun.org
SMTP安全:无
SMTP验证类型:登录
我收到此错误消息。
发送密码更改确认电子邮件时出错
有关此错误的详细信息
调试信息: 错误代码:cannotmailconfirm 堆栈跟踪: /lib/setuplib.php的第495行:抛出moodle_exception /login/lib.php的第110行:调用print_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
答案 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)
我刚刚在数字海洋上的服务器中做到了这一点。所以这里的解决方案:
这里的诀窍是端口 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';
}
?>