if(mysql_affected_rows()==1)
{
$msg="To activate your account, please click on the following link:\n\n
http://localhost:80/activate.php?email=".urlencode($email)."&key=".$activation;
if(mail($email,"Registration Confirmation", $msg, "From: myemail@mycompany.com\r\nX-
Mailer: php"))
{
echo '<div> Thank you for registering. A confirmation email has been sent to '.
$email.'.Please click on the link to activate your account then</div>';
}
}
我使用该代码段从myemail@mycomapany.com发送电子邮件至$ email(myyahoo@yahoo.com),但我未能在yahoo帐户中收到任何电子邮件。不过,我已经在浏览器中显示了回显的消息,表明邮件成功。此外,我已尝试直接通过Outlook从myemail@mycomapany.com发送电子邮件到雅虎帐户,它工作正常。有人请帮我修复源剪辑或任何其他设置以使邮件功能正常工作吗?非常感谢。
编辑:顺便说一下,我还设置了我的php.ini的stmp脚本块,如下所示,[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = mail.mycompany.com
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = postmaster@localhost
我的问题是将我的本地计算机设置为本地邮件服务器,我编辑php.ini如上所述,但它仍然无法正常工作。
[解决]
<?php
function SendMail($from, $to, $subject, $body)
{
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "mail.mycompany.com";
$mail->SMTPAuth = true;
$mail->Username = "My name"; // SMTP username
$mail->Password = "mypassword"; // SMTP password = one used in Outlook
$mail->From = "myemail@mycompany.com";
$mail->FromName = "Registration Confirmation Email";
$mail->AddAddress($to);
$mail->IsHTML(true); // set email format to HTML
$mail->Subject = $subject;
$mail->Body = $body;
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
return false;
}
return true;
}
?>
我包含上面的代码片段来演示一个使用phpmailer的小但有效的示例。感谢在下面的帖子中向我介绍它的人。
答案 0 :(得分:2)
看看phpMailer它很好用,非常容易使用,你可以从现有的电子邮件帐户发送电子邮件(如gmail)
答案 1 :(得分:1)
尝试使用此脚本,您也可以从此脚本向本地文件发送电子邮件至外部电子邮件。
require_once('class.phpmailer.php');
define('SMTPSERVER', 'mail.yourcompany.com');// sec. smtp server
define('SMTPUSER', 'info@yourcompanyname.com'); // sec. smtp username
define('SMTPPWD', '123456'); // sec. password
$useremail = 'mail@mail.com';
$msg = 'your text here';
$from = 'info@yourcompanyname.com';
$mailTest=new EmailService();
if ($mailTest->generalMailer($useremail, $from, 'Yoursite.com', 'Your company name', $msg)) {
} else {
if (!$mailTest->generalMailer($useremail, $from, 'Yoursite.com', 'Your company name', $msg)) {
if (!empty($error)) echo $error;
} else {
echo 'Yep, the message is send (after hard working)';
}
}
header("location:index.php?email_msg=Email sent successfully");
答案 2 :(得分:0)
您应该查看邮件标题。大部分时间原因是:
有关详细信息,请参阅here。
修改强>
好的,我想我知道问题可能在哪里。
LAMP和WAMP之间存在很大差异。 Linux系统往往具有sendmail库,它允许您在不配置任何内容的情况下将邮件发送到其他系统。 Windows没有。
因此,您应该安装SMTP服务器,以便将邮件发送到外部源。请查看details的这个问题。
此外,如果您需要对此进行测试,则应该查看Papercut,这在测试系统时是必不可少的。
如果您可以发送普通mail()
,您也应该能够从图书馆发送邮件。不是相反的方式。唯一的例外是,如果您使用现有的SMTP / IMAP服务器来执行此操作,例如的Gmail。
答案 3 :(得分:0)
您确定本地计算机上安装了MTA(邮件传输代理=邮件服务器)吗?否则,您将需要使用ISP的SMTP服务器。
主要是mail.yourprovider.com
或smtp.yourprovider.com
(与Outlook中用于外发邮件的主机名相同)。 PHP不能单独邮件,它需要一个MTA(本地或远程)才能这样做。