电子邮件将发送给人们 - 这是一件非常棒的事情。
但是,发送电子邮件的地址会不时变化。邮件发送的地址将作为网站管理员的输入。
问题是,从gmail帐户发送电子邮件需要某种类型的编码,与雅虎一起做需要另一种编码等等。
php从任何电子邮件地址发送电子邮件的方式是什么?
是否有免费提供这样的脚本?
答案 0 :(得分:2)
无需身份验证即可发送电子邮件
<?php
$to = 'nobody@whateverdomain.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@whateverdomain.com' . "\r\n" .
'Reply-To: webmaster@whateverdomain.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
发送电子邮件的正确方法是通过SMTP连接。 假设安装了PEAR Mail package。
<?php
require_once "Mail.php";
$from = "Name Surname <sender@yourdomain.com>";
$to = "Name Whatever <recipient@example.com>";
$subject = "Subject!";
$body = "Hi,\n\nHow 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);
答案 1 :(得分:0)
基本上,您设置的邮件标题包含,谁正在发送该电子邮件地址。幸运的是,这主要是垃圾邮件(关键字:SPF,DNS PTR,...)
最简单的方法是为您要使用的每个帐户创建类(gmail,yahoo,...),然后使用工厂模式来保持代码清洁。
最佳选择是:使用smtp进行身份验证。这是最受支持的标准,您只需要为不提供smtp身份验证的服务编写解决方案。
更新
我不知道如何帮助你。您希望从每个域发送邮件,而不会将其标记为垃圾邮件,只需提供“来自(此处输入电子邮件地址)”输入字段的邮件,以及完整的魔法操作 - 所有内容 - 脚本包。但是不知道邮件是如何工作的。
专业提示:阅读有关SMTP并了解发送邮件的方式。