玄元一墨 2022-10-28 15:12 采纳率: 70%
浏览 12
已结题

mail()方法无法发送邮件

看了教程:利用php的mail()函数发送邮件__瞳孔的博客-CSDN博客_mail.php
然后我就去实践了

教程里说是要在php.ini里先修改smtp配置,但是我用了ini_set方法,效果应该是一样的。

<?php
    //设置SMTP服务器地址
    ini_set('SMTP','smtp.163.com');
    //设置SMTP服务器端口
    ini_set('smtp_port','25');
    //设置邮件发送者签名
    ini_set('sendmail_from','duxian_studio@163.com');

?>
<?php
    $txt = "First line of textnSecond line of text";
    $txt = wordwrap($txt,70);
    if(mail("hack_chenzhisheng@163.com","My subject",$txt)){
        echo "邮件投递成功!";
    }else{
        echo "邮件投递失败!";
    }
?>

以上代码运行结果输出:

img


所以代表了mail()返回值是true,但是我检查过我的邮箱,里面并没有找到这个邮件(垃圾箱也找过了)。

在某个PHP交流群里提过问,但是目前还是没有办法解决.

img

求解决,谢谢~

  • 写回答

1条回答 默认 最新

  • 向宇it 全栈领域优质创作者 2022-10-28 19:27
    关注

    别用这种发送了太老了,没什么实际意义
    现在都用phpmailer去发邮箱
    这个我写的demo你可以看看

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;

    $mail = new PHPMailer(true); // Passing true enables exceptions
    try {
    //服务器配置
    $mail->CharSet ="UTF-8"; //设定邮件编码
    $mail->SMTPDebug = 0; // 调试模式输出
    $mail->isSMTP(); // 使用SMTP
    $mail->Host = 'smtp.mxhichina.com'; // SMTP服务器
    $mail->SMTPAuth = true; // 允许 SMTP 认证
    $mail->Username = '邮箱用户名'; // SMTP 用户名 即邮箱的用户名
    $mail->Password = '密码或者授权码'; // SMTP 密码 部分邮箱是授权码(例如163邮箱)
    //其中,mail_port与mail_encryption是对应关系,如“587与tls","465与ssl"对应。
    $mail->SMTPSecure = 'ssl'; // 允许 TLS 或者ssl协议
    $mail->Port = 465; // 服务器端口 25 或者465 具体要看邮箱服务器支持

     $mail->setFrom('xxxx@163.com', 'Mailer');  //发件人
     $mail->addAddress('564196401@qq.com', '向宇');  // 收件人
     //$mail->addAddress('xxx@example.com');  // 可添加多个收件人
     $mail->addReplyTo('xxxx@163.com', 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致
     //$mail->addCC('cc@example.com');         //抄送
     //$mail->addBCC('bcc@example.com');      //密送
    
     //发送附件
     // $mail->addAttachment('../xy.zip');         // 添加附件
     // $mail->addAttachment('../thumb-1.jpg', 'new.jpg');   // 发送附件并且重命名
    
     //Content
     $mail->isHTML(true);   // 是否以HTML文档格式发送
     $mail->Subject = '这里是邮件标题' . time();
     $mail->Body    = '<h1>这里是邮件内容</h1>' ;
     $mail->AltBody = '如果邮件客户端不支持HTML则显示此内容';
    
     $mail->send();
     echo '邮件发送成功';
    

    } catch (Exception $e) {
    echo '邮件发送失败: ', $mail->ErrorInfo;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月28日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备