php,从任何电子邮件地址发送电子邮件



电子邮件将发送给人们——这是一件非常常见的事情。

但发送电子邮件的地址会因时间而异。发送邮件的地址将作为站点管理员的输入。

问题是,从gmail账户发送电子邮件需要某种类型的编码,与雅虎合作需要另一种编码等等

php中从任何电子邮件地址发送电子邮件的方式是什么?

有这样的脚本免费提供吗?

在没有身份验证的情况下发送电子邮件

<?php
$to      = 'nobody@whateverdomain.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@whateverdomain.com' . "rn" .
    'Reply-To: webmaster@whateverdomain.com' . "rn" .
    'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>

发送电子邮件的正确方式是通过SMTP连接。假设安装了PEARMail包。

<?php
 require_once "Mail.php";
 $from = "Name Surname <sender@yourdomain.com>";
 $to = "Name Whatever <recipient@example.com>";
 $subject = "Subject!";
 $body = "Hi,nnHow are you?";
 $host = "mail.yourdomain.com";
 $username = "smtp_username";
 $password = "smtp_password";
 $headers = array ('From' => $from,
   'To' => $to,
   'Subject' => $subject);
 $smtp = Mail::factory('smtp',
   array ('host' => $host,
     'auth' => true,
     'username' => $username,
     'password' => $password));
 $mail = $smtp->send($to, $headers, $body);
 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
   echo("<p>Message successfully sent!</p>");
  }
 ?>

假设您有Zend Framework,您也可以通过SMTP上的Zend_Mail进行发送。下面的示例使用有关Google SMTP 的信息

require_once 'Zend/Loader/Autoloader.php'; //Should be in the include_path
$autoloader = Zend_Loader_Autoloader::getInstance();
$config = array('ssl' => 'tls', 'port' => 587, 'auth' => 'login', 'username' => 'username@gmail.com', 'password' => 'password');
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$mail = new Zend_Mail();
if (strtolower($this->getType()) == 'html')
$mail->setBodyHtml($this->getBody());
}
else {
$mail->setBodyText($this->getBody());
}
$mail
->setFrom($this->getFromEmail(), $this->getFromName())
->addTo($this->getToEmail(), $this->getToName())
->setSubject($this->getSubject());
$mail->send($transport);

基本上,您可以设置邮件头,其中包含发送该电子邮件地址的人。幸运的是,这大部分将作为垃圾邮件(关键字:SPF,DNS PTR,…)到达

最简单的方法是为你要使用的每个帐户(gmail,yahoo,…)创建类,然后使用工厂模式来保持代码干净。

http://php.net/manual/en/language.oop5.patterns.php

最好的选择是:使用带有身份验证的smtp。这是最受支持的标准,您只需要为不提供smtp-auth的服务编写解决方案。

更新

我不知道该怎么帮你。您希望从每个域发送邮件,而不将其标记为垃圾邮件,只需提供一个"来自(在此处输入电子邮件地址)的邮件"输入字段和一个完全神奇的无所不能的脚本包。但不知道邮寄是如何工作的。

专业提示:阅读SMTP,了解发送邮件的工作原理。

最新更新