我正在尝试使用 Zoho 的 SMTP 服务器从 MyBB 安装发送注册电子邮件。但是,电子邮件永远不会发送,当我检查日志时,我注意到错误是。
Month Day Year:Hour:Minute host=smtp.zoho.com tls=on auth=on user=user[at]mydomain.com from=user[at]mydomain.com recipients=some.user[at]gmail.com smtpstatus=553 smtpmsg='553 Relaying disallowed' errormsg='the server did not accept the mail' exitcode=EX_UNAVAILABLE
(某些部分被屏蔽以隐藏私有(private)信息!)
这是php.ini中设置的sendmail路径
sendmail_path = "/usr/bin/msmtp -C /etc/msmtp/myserver --logfile /var/log/msmtp/myserver.log -a default -t"
(某些部分被屏蔽以隐藏私有(private)信息!)
这是 MSMTP 的 myserver 配置
# Define here some setting that can be useful for every account
defaults
logfile /var/log/msmtp/general.log
# Settings for default account
account default
protocol smtp
host smtp.zoho.com
tls on
tls_starttls off
tls_certcheck off
port 465
auth plain
user user[at]mydomain.com
password **********
from user[at]mydomain.com
logfile /var/log/msmtp/myserver.log
# If you don't use any "-a" parameter in your command line,
# the default account "default" will be used.
# account default: default # (disabled because this gives a "redefined" error)
(某些部分被屏蔽以隐藏私有(private)信息!)
问题是我知道它在工作并且没有端口被阻止,因为当我在命令行中使用相同的命令时。邮件发送和接收成功。
sudo echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" | msmtp --debug -a default --from=user[at]mydomain.com -t some.user[at]gmail.com --file=/etc/msmtp/myserver
(某些部分被屏蔽以隐藏私有(private)信息!)
这意味着要么是 MyBB 发送电子邮件的方式有问题,要么是我在 php.ini 文件中设置的 PHP 配置或命令行有问题。
我搜索了一整天,但我得到的每一个结果要么与 PHP 无关,要么从一开始就没有用。我的是从命令行而不是从 PHP 工作。
我在服务器上使用 UFW,每个端口都完全打开,所以我猜这与被阻止的端口无关。
它适用于 Gmail,但每封电子邮件都被发送到垃圾邮件文件夹,并且并非每次都适用于每封电子邮件。
编辑: 我尝试使用 PHP5-CLI 发送电子邮件并且成功了。所以我猜测是 PHP5-FPM 或 MyBB 出了问题。
最佳答案
如果没有安装 MyBB,我无法对此进行测试,但是如果它使用 native PHP 邮件功能,您可能需要将 -f 选项添加到 mail() 函数调用中,因为您正在使用 sendmail..注意它是第 5 个参数(我以为它是第 4 个,我浪费了一天时间)
mail('nobody@example.com', 'the subject', 'the message', null,
'-flocaluserr@thisdomain.com');
关于PHP - 553 Zoho mail 和 MyBB 不允许中继,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23665466/
我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_
我正在使用DMOZ的listofurltopics,其中包含一些具有包含下划线的主机名的url。例如:608609TheOuterHeaven610InformationandimagegalleryofMcFarlane'sactionfiguresforTrigun,Akira,TenchiMuyoandotherJapaneseSci-Fianimations.611Top/Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures612虽然此url可以在网络浏览器中使用(或者至少在我的浏览器中可以使用:
我读过这个:Let’sstartwithasimpleRubyprogram.We’llwriteamethodthatreturnsacheery,personalizedgreeting.defsay_goodnight(name)result="Goodnight,"+namereturnresultend我的理解是,方法是定义在类中的函数或子程序,可以关联到类(类方法)或对象(实例方法)。那么,如果它不是在类中定义的,怎么可能是方法呢? 最佳答案 当你在Ruby中以这种方式在全局范围内定义一个函数时,它在技术上变成了Obje
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
在DavidFlanagan的TheRubyProgrammingLanguage中;松本幸弘theystatethatthevariableprefixes($,@,@@)areonepricewepayforbeingabletoomitparenthesesaroundmethodinvocations.谁可以给我解释一下这个? 最佳答案 这是我不成熟的意见。如果我错了,请纠正我。假设实例变量没有@前缀,那么我们如何声明一个实例变量?classMyClassdefinitialize#Herefooisaninstanceva
我已经设法制作了一个仅用于注册和登录的应用程序。目前,我允许用户通过邮件帐户激活(按照本教程:https://www.railstutorial.org/book/account_activation_password_reset和“railsgeneratecontrollerAccountActivations--no-test-framework')但我希望管理员能够激活或停用用户。在我的用户模型中,我设法定义了两种方法:defactivate_account!update_attribute:is_active,trueenddefdeactivate_account!upda
我正在制作一个应用程序,我需要用户使用所见即所得的编辑器输入描述。我不能信任用户输入,所以我只需要允许a、em、ul、li标签。我如何轻松剥离其他的? 最佳答案 https://github.com/rgrove/sanitize/ 关于ruby-on-rails-允许用户只输入特定的标签,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7390075/
如何在我的模型中验证:title以便只接受字母a-z、A-z和0-9?validates:title,:format=>{with:REGULAREXPRESSION,:message=>'nospecialcharacters,onlylettersandnumbers'}正则表达式应该是什么? 最佳答案 正则表达式为/^[a-zA-Z0-9]*$/您基本上定义了三个允许的符号范围,首先是a-z,然后是A-Z,最后是0-9。最后的星号定义需要匹配零个或多个前面所述的字符,这意味着允许使用空标题。如果您需要至少一个字符,请使用+而不
我有一个页面,有时加载时间超过一分钟。假设这是预期的行为并且不会改变。在这些情况下,我得到Net::ReadTimeout。请注意,这是在通过单击上一页上的按钮导航到页面之后,而不是ajax请求。因此Capybara.using_wait_time没有帮助。我尝试了一些激进的方法(其中一些我知道行不通),例如:设置page.driver.browser.manage.timeouts的implicit_wait、script_timeout和page_load。遍历整个对象空间并设置所有Selenium::WebDriver::Remote::Http::Default的timeout
遇到一些奇怪的行为,想知道是否有其他人可以确认我所看到的。假设您创建了一个带有成员变量的类,并允许使用attr_reader读取它。classTestClassattr_reader:valdefinitialize(value)@val=valueendend现在当我执行以下操作时,它似乎修改了@val的值,即使我只授予它读取权限。test=TestClass.new('hello')putstest.valtest.val返回hellohelloworld这只是我在irb中进行的一些测试的结果,所以不确定是否总是如此 最佳答案