【问题标题】:How do I populate this placeholder info for a GoDaddy email form?如何为 GoDaddy 电子邮件表单填充此占位符信息?
【发布时间】:2021-11-01 02:04:09
【问题描述】:

我正在为我的网站使用下面的模板代码,但在获取要发送的联系表电子邮件时遇到问题。

require_once "Mail.php";
// Change this options:
$username = 'user@gmail.com';
$password = 'password';
$smtpHost = 'ssl://smtp.gmail.com';
$smtpPort = '465';
$to = 'user@gmail.com';
$from = 'user@gmail.com';

如何用 GoDaddy 电子邮件替换占位符信息?

我尝试了几种方法,但我的“发送”按钮什么也没做。

我真的需要在此表单上输入我的电子邮件用户名和护照吗?

如果在表单中输入电子邮件,为什么我需要指定来自谁?

【问题讨论】:

    标签: php forms email contacts send


    【解决方案1】:

    您似乎正在使用 PEAR 邮件通过外部 SMTP 服务器发送邮件。这是可行的,并且通常是使用 PHP 发送电子邮件的最简单方法之一。您的代码不完整,因为我没有看到任何实际发送邮件的内容。但要回答您的其他问题:

    首先,您确实需要输入您的电子邮件用户名和护照才能发送电子邮件,因为它用于对 SMTP 服务器进行身份验证。 不要在 HTML 表单中输入它,让它隐藏在 PHP 脚本中。

    其次,对于“发件人”,不要使用为此输入的电子邮件。相反,将“发件人”设置为您希望它在发送邮件时显示的任何电子邮件地址,例如您的电子邮件 (gmail) 地址。如果邮件不是来自您用作登录的相同地址,则 SMTP 服务器通常会拒绝该邮件。不确定 gmail 是否这样做,因为我从未使用过他们的 SMTP 服务器,但这是他们会做的事情。我想 GoDaddy 可能也会这样做。

    输入用户的电子邮件作为新的可选字段,Reply-To 字段。这对您来说很方便,因为您只需点击消息上的“回复”,它就会发送给正确的用户。

    我个人更偏向于使用 PEAR 的面向对象的方式。以下是我的编码方式:

    require_once(`Mail.php');
    $headers['From']    = 'Your Name <your_email@whateverdomain.com>';
    $headers['To']      = $recipients;
    $headers['Subject'] = "$subject";
    $headers['Date']    = date('r', time()); // Auto-generate date
    $headers['Reply-To'] = "$email_from_form";
    
    $params['host'] = 'ssl://smtp.yourhost.com'; // Look this up from your SMTP provider
    $params['port'] = '465'; // This may need to be changed with some providers, look it up in the provider's documentation
    $params['auth'] = true; // Nearly always needs to be true nowadays
    $params['username'] = 'username'; // Look this up from your SMTP provider
    $params['password'] = 'password';
    
    $mail_object =& Mail::factory('smtp', $params);
    
    $output=$mail_object->send($recipients, $headers, $body);
    
    // Error handling
    if(PEAR::isError($output))
    {
        $error=$output->getMessage();
        // Do whatever you want with this error. I output it during setup / configuration, then on the live production server I store it in a log or database that I check regularly.
    }
    

    对于故障排除,只需将其分解为多个部分。如果 PEAR 生成错误,请检查它,然后您就可以弄清楚该怎么做。如果您在此之前遇到错误,希望它可以帮助您弄清楚发生了什么。并且,在此之前,请验证提交的 Web 表单是否正确收集信息。

    $_POST 变量中收集这些。比如$email_from_form=$_POST['email'];之类的。

    最后,在您上线之前查看电子邮件联系表单的安全性。您会发现攻击者几乎会在您的表单启动后就开始尝试对其进行粗略的操作。您绝对必须实施一些安全措施,否则您会很快发现表单发送到的电子邮件地址充满了奇怪的垃圾邮件和黑客攻击。

    至少对您提交的数据进行一些检查。我在任何 Web 内容表单上实施了一系列复杂的反垃圾邮件措施,从虚假字段到计时,再到防止机器人为表单添加书签的加密哈希。即使这样,一些垃圾邮件仍然可以通过。这些天你需要非常小心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2021-10-21
      • 2021-07-21
      • 2014-07-08
      • 2011-06-24
      • 2012-05-01
      • 2018-01-09
      相关资源
      最近更新 更多