Maison développement back-end tutoriel php linux下php配置smtp发送邮件的方法

linux下php配置smtp发送邮件的方法

Jul 25, 2016 am 08:54 AM

  1. include_once("class.phpmailer.php");

  2. /**
  3. * 定义邮件模块配制信息
  4. */
  5. define("SMTP_HOST","smtp.mail.yahoo.com"); // SMTP 主机
  6. define("SMTP_MAIL"," XXXX@yahoo.cn"); // SMTP 用户email
  7. define("SMTP_PASS"," XXXX"); // SMTP 用的密码
  8. define("SERVICE_MAIL"," XXXX@yahoo.cn"); // SMTP 用户email

  9. define("SERVICE_NAME","PHPBOOK邮件测试"); // SMTP 用的名字
  10. /**

  11. * 使用phpmailer发邮件模块
  12. *
  13. * @param string $email
  14. * @param string $user
  15. * @param string $subject
  16. * @param string $body
  17. * @return bool
  18. */
  19. function sendMail($email,$user,$subject,$body)
  20. {
  21. $mail = new PHPMailer();
  22. //$this;
  23. $mail->IsSMTP(); // 设置使用SMTP
  24. $mail->Host = SMTP_HOST; // 设置SMTP服务器地址
  25. $mail->SMTPAuth = true; // 打开SMTP权限验证
  26. $mail->Username = SMTP_MAIL; // SMTP 用户名
  27. $mail->Password = SMTP_PASS; // SMTP 服务器密码
  28. $mail->From = SERVICE_MAIL; // 设置发送者地址

  29. $mail->FromName = SERVICE_NAME; // 设置发送者名字
  30. $mail->AddAddress($email, $user); // 添加接收者地址
  31. $mail->AddReplyTo(SERVICE_MAIL, SERVICE_NAME); // 设置回复地址
  32. $mail->WordWrap = 50; // 设置显示格式

  33. $mail->IsHTML(true); // 设置邮件支持html
  34. $mail->Subject = $subject;
  35. $mail->Body = $body;
  36. $mail->AltBody = ""; // 文本类型的邮件
  37. if(!$mail->Send())

  38. {
  39. return $mail->ErrorInfo;
  40. }
  41. return true;
  42. }
  43. //开始发送测试邮件ng: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/xiehui/admin/mail/class.smtp.php on line 89

  44. $tomail = " XXXX@126.com";
  45. $user = " XXXXlinux";
  46. $_mailSubject = "邮件测试示例!"; // 发给用户的邮件标题小组
  47. $_mailBody = "新浪网"; // 邮件内容小组
  48. sendMail($tomail,$user,$_mailSubject,$_mailBody);
  49. ?>
复制代码

实验证明yahoo的smtp很好用,号称sina的其实并不好用,我卡在着好长时间。

方法四,给予socket编写的程序 使用socket发送邮件的封装类:

  1. class sendmail{
  2. var $lastmessage; //记录最后返回的响应信息
  3. var $lastact; //最后的动作,字符串形式
  4. var $welcome; //用在HELO后面,欢迎用户
  5. var $debug; //是否显示调试信息
  6. var $smtp; //smtp服务器
  7. var $port; //smtp端口号
  8. var $fp; //socket句柄
  9. //发送邮件函数
  10. function send_mail($smtp, $welcome="", $debug=false) {
  11. if(empty($smtp)) die("SMTP不能为空!");
  12. $this->smtp=$smtp;
  13. if(empty($welcome)) {
  14. $this->welcome=gethostbyaddr("localhost");
  15. }else
  16. $this->welcome=$welcome;
  17. $this->debug=$debug;
  18. $this->lastmessage="";
  19. $this->lastact="";
  20. $this->port="25";
  21. }
  22. //显示调试信息
  23. function show_debug($message, $inout) {
  24. if ($this->debug) {
  25. if($inout=="in"){ //响应信息
  26. $m=' }else
  27. $m='>> ';
  28. if(!ereg("\n$", $message))
  29. $message .= "
    ";
  30. $message=nl2br($message);
  31. echo "${m}${message}";
  32. }
  33. }
  34. //执行传递的命令
  35. function do_command($command, $code) {
  36. $this->lastact=$command;
  37. $this->show_debug($this->lastact, "out");
  38. fputs ( $this->fp, $this->lastact );
  39. $this->lastmessage = fgets ( $this->fp, 512 );
  40. $this->show_debug($this->lastmessage, "in");
  41. if(!ereg("^$code", $this->lastmessage))
  42. return false;
  43. else
  44. return true;
  45. }
  46. //邮件发送处理
  47. function send( $to,$from,$subject,$message) {
  48. //连接服务器
  49. $this->lastact="connect";
  50. $this->show_debug("连接到SMTP 服务器: ".$this->smtp, "out");
  51. $this->fp = fsockopen ( $this->smtp, $this->port );
  52. if ( $this->fp ) {
  53. $this->set_socket_blocking( $this->fp, true );
  54. $this->lastmessage=fgets($this->fp,512);
  55. $this->show_debug($this->lastmessage, "in");
  56. if (! ereg ( "^220", $this->lastmessage ) ) {
  57. return false;
  58. }else{
  59. $this->lastact="HELO " . $this->welcome . "\n";
  60. if(!$this->do_command($this->lastact, "250")){
  61. fclose($this->fp);
  62. return false;
  63. }
  64. $this->lastact="MAIL FROM: $from" . "\n";
  65. if(!$this->do_command($this->lastact, "250")){
  66. fclose($this->fp);
  67. return false;
  68. }
  69. $this->lastact="RCPT TO: $to" . "\n";
  70. if(!$this->do_command($this->lastact, "250")){
  71. fclose($this->fp);
  72. return false;
  73. }
  74. //开始发送邮件正文
  75. $this->lastact="DATA\n";
  76. if(!$this->do_command($this->lastact, "354")){
  77. fclose($this->fp);
  78. return false;
  79. }
  80. //开始处理邮件主题头
  81. $head="Subject: $subject\n";
  82. if(!empty($subject) && !ereg($head, $message)){
  83. $message = $head.$message;
  84. }
  85. //开始处理邮件From头
  86. $head="From: $from\n";
  87. if(!empty($from) && !ereg($head, $message)) {
  88. $message = $head.$message;
  89. }
  90. //开始处理邮件To头
  91. $head="To: $to\n";
  92. if(!empty($to) && !ereg($head, $message)) {
  93. $message = $head.$message;
  94. }
  95. //处理结束串
  96. if(!ereg("\n\.\n", $message))
  97. $message .= "\n.\n";
  98. $this->show_debug($message, "out");
  99. fputs($this->fp, $message);
  100. $this->lastact="QUIT\n";
  101. if(!$this->do_command($this->lastact, "250")){
  102. fclose($this->fp);
  103. return false;
  104. }
  105. }
  106. return true;
  107. }else{
  108. $this->show_debug("连接失败!!", "in");
  109. return false;
  110. }
  111. }
  112. }
  113. ?>
复制代码

使用socket发送邮件示例:

  1. include ("./sendmail.class.php");
  2. $mail = new sendmail();
  3. $email = "您好,这是一个测试邮件!";
  4. $sendmail = new send_mail("smtp.mail.126.com","PHPBOOK",true); //显示调示信息
  5. if($mail->send("XXXX@126.com", "XXXX@126.com", "测试SOCKET邮件", $email)) {
  6. echo "发送成功!
    ";
  7. }else{
  8. echo "发送失败!
    ";
  9. }
  10. ?>
复制代码


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) 11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) Mar 03, 2025 am 10:49 AM

Les longues URL, souvent encombrées de mots clés et de paramètres de suivi, peuvent dissuader les visiteurs. Un script de raccourcissement d'URL offre une solution, créant des liens concis idéaux pour les médias sociaux et d'autres plateformes. Ces scripts sont utiles pour les sites Web individuels

Travailler avec les données de session Flash dans Laravel Travailler avec les données de session Flash dans Laravel Mar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Construisez une application React avec un Laravel Back End: Partie 2, React Construisez une application React avec un Laravel Back End: Partie 2, React Mar 04, 2025 am 09:33 AM

Il s'agit de la deuxième et dernière partie de la série sur la construction d'une application React avec un back-end Laravel. Dans la première partie de la série, nous avons créé une API RESTful utilisant Laravel pour une application de liste de base sur le produit. Dans ce tutoriel, nous serons Dev

Misque de réponse HTTP simplifié dans les tests Laravel Misque de réponse HTTP simplifié dans les tests Laravel Mar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Mar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

12 meilleurs scripts de chat PHP sur Codecanyon 12 meilleurs scripts de chat PHP sur Codecanyon Mar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Annonce de l'enquête sur la situation en 2025 PHP Annonce de l'enquête sur la situation en 2025 PHP Mar 03, 2025 pm 04:20 PM

L'enquête sur le paysage PHP 2025 étudie les tendances actuelles de développement du PHP. Il explore l'utilisation du cadre, les méthodes de déploiement et les défis, visant à fournir des informations aux développeurs et aux entreprises. L'enquête prévoit la croissance de la PHP moderne versio

Notifications à Laravel Notifications à Laravel Mar 04, 2025 am 09:22 AM

Dans cet article, nous allons explorer le système de notification dans le framework Web Laravel. Le système de notification de Laravel vous permet d'envoyer des notifications aux utilisateurs sur différents canaux. Aujourd'hui, nous discuterons de la façon dont vous pouvez envoyer des notifications OV

See all articles