【问题标题】:using core php mail() to send via gmail SMTP使用核心 php mail() 通过 gmail SMTP 发送
【发布时间】:2012-04-19 04:23:11
【问题描述】:

是否可以在不使用任何外部类的情况下通过 gmail smtp 在核心 php 中发送邮件?

【问题讨论】:

  • 更好的问题是您为什么要这样做? :)
  • 您将需要使用外部类并且您将需要 OpenSSL 扩展。这是因为 Gmail 需要 SSL/TLS,而 PHP 核心无法做到这一点。
  • 两个 cmets 都不正确。我同意最好只说mail(),而不是包含一个 600 行的库。
  • @MetalFrog 一个更好的问题是,你为什么要以这样的态度去做世界上的任何事情。我无法告诉你多久我访问论坛搜索模糊问题的答案,非常第一个答案是总是像你这样的人,问“为什么”。 为什么不呢?也许这是我们的工作。也许这是我们为朋友所做的事情。也许我们只是想知道是否可能。你为什么不停止问为什么,如果你真的知道答案,那么帮助改变
  • @Ayelis 通常情况下,很难仅通过文字来表达讽刺,尽管我希望一张笑脸就足够了——三年来一直如此。这是一种简洁的说法,“那里有更好的选择,你已经有更好的解决方案在等着你,只需深入一点。”如果你对此感到不快,还不够深入。

标签: php smtp gmail


【解决方案1】:

对此有很多误解。通过 PHP 的简单“mail()”命令使用 gmail 发送电子邮件是 100% 可能的。 而且这是 100% 简单的。

安装 SSMTP:

sudo apt-get install ssmtp

编辑其设置文件:

sudo nano /etc/ssmtp/ssmtp.conf

在里面,使它与此类似,但使用您自己的凭据:

mailhub=smtp.gmail.com:587
AuthUser=youremail@gmail.com
AuthPass=password
UseSTARTTLS=YES

# You can only do this if you've verified your domain with Gmail.
# If you haven't, delete, or add a # before this
hostname=yourwebsite.com

FromLineOverride=YES

最后,打开你的 php.ini,搜索 sendmail_path 并使用这个值:

sendmail_path = /usr/sbin/ssmtp -t

就是这样!使用简单的 1 行邮件功能在您的 PHP 中进行测试:

mail('to@address.com', 'Subject', 'Message', 'From: Your name <youremail@gmail.com>');

Gmail 安全更新

Gmail 现在默认阻止此操作。您仍然可以访问:http://www.google.com/settings/security/lesssecureapps

开启此功能开启

【讨论】:

  • 这是什么意思:You can only do this if you've verified your domain with Gmail.?它是否与 gmail 有关,或者我们可以做一些事情来验证我们在 gmail 上的域?
  • 它是如此美妙而直接的解决方案 :) 我花了很长时间来克服这种情况,希望这种方法完全可以正常工作,没有任何问题。
  • 感谢您的反馈!不幸的是,选择的答案是错误的。至于使用经过验证的域,这仅适用于您希望发件人地址与您的 Gmail 地址不同的情况,例如您拥有一个网站并想要一个专业的发件人地址。但是您不能使用任何发件人地址,例如 bill@microsoft.com,除非您可以证明您已经可以访问此电子邮件。 如何使用 Gmail 验证此电子邮件: 登录 Gmail,然后在“设置”>“帐户”部分中,点击“添加您拥有的另一个电子邮件地址”。输入您的电子邮件,Google 会发送一封验证电子邮件,其中包含确认链接
  • 这仍然是可能的。 Gmail 最近默认禁用了它,现在要求您启用不太安全的应用程序。你可以在这里这样做:google.com/settings/security/lesssecureapps
  • 可以确认这仍然有效。我知道这已经很老了。但这真是太棒了:) 尝试配置 php 来做邮件一直是一场噩梦,这真的很容易/很棒
【解决方案2】:

你可以通过 PHPmailer 库来做到这一点,它已经有 gmail.php 文件。

只需打开并将您的详细信息放在该文件中,您也可以在文件中使用类似的代码。

您必须在您的 gmail 帐户设置中进行设置以允许 smtp 邮件

【讨论】:

  • OP 想要简单地使用核心 PHP mail() 函数而不是任何外部库。
【解决方案3】:

如果您有权编辑php.ini,那么您可以执行以下操作:

[mail function]
SMTP = ssl://smtp.gmail.com
smtp_port = 465
username = info@Mmydomainname.com
password = myemailpassword
sendmail_from = info@mydomainname.com

您也可以这样做:

<?php
ini_set( 'smtp_port', 465 );
//etc

【讨论】:

  • 这行不通。 Gmail 仅接受端口 465 上的连接,即 SSL。另外,我不知道您将如何执行身份验证过程。
  • 添加是的,我刚刚测试了我的代码,您无法使用本机 mail() 函数进行身份验证...您需要使用 PEAR 或 PHPMailer 等第三方选项才能使其正常工作...或者使用 fsockopen 实现你自己的(虽然有点乏味)。
【解决方案4】:

我认为这是不可能的,因为您需要进行身份验证。另外,你需要通过SSL套接字连接,我不知道股票mail()函数是否支持这个。

如果你愿意使用Pear Mail 包,你可能想看看这个:

Send email using the GMail SMTP server from a PHP page

【讨论】:

  • 完全有可能。请看我的回答。 ;)
【解决方案5】:

这是可能的,尽管您必须修改 php.ini 设置,请参阅PHP manual。您可以在运行时修改 php.ini 设置ini_set

【讨论】:

    猜你喜欢
    • 2018-05-13
    • 2011-08-11
    • 2012-05-29
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 2011-10-16
    • 2011-05-11
    相关资源
    最近更新 更多