Maison développement back-end tutoriel php 在PHP中用Socket发送电子邮件(三)_PHP

在PHP中用Socket发送电子邮件(三)_PHP

Jun 01, 2016 pm 12:42 PM
message 发送 处理 电子邮件

邮件发送处理

  下面是真正的秘密了,可要看仔细了。:)


1    function send( $to,$from,$subject,$message)
2    {
3
4        //连接服务器
5        $this->lastact=\"connect\";
6
7        $this->show_debug(\"Connect to SMTP server : \".$this->smtp, \"out\");
8        $this->fp = fsockopen ( $this->smtp, $this->port );
9        if ( $this->fp )
10        {
11
12            set_socket_blocking( $this->fp, true );
13            $this->lastmessage=fgets($this->fp,512);
14            $this->show_debug($this->lastmessage, \"in\");
15
16            if (! ereg ( \"^220\", $this->lastmessage ) )
17            {
18                return false;
19            }
20            else
21            {
22                $this->lastact=\"HELO \" . $this->welcome . \"\n\";
23                if(!$this->do_command($this->lastact, \"250\"))
24                {
25                    fclose($this->fp);
26                    return false;
27                }
28
29                $this->lastact=\"MAIL FROM: $from\" . \"\n\";
30                if(!$this->do_command($this->lastact, \"250\"))
31                {
32                    fclose($this->fp);
33                    return false;
34                }
35
36                $this->lastact=\"RCPT TO: $to\" . \"\n\";
37                if(!$this->do_command($this->lastact, \"250\"))
38                {
39                    fclose($this->fp);
40                    return false;
41                }
42               
43                //发送正文
44                $this->lastact=\"DATA\n\";
45                if(!$this->do_command($this->lastact, \"354\"))
46                {
47                    fclose($this->fp);
48                    return false;
49                }
50
51                //处理Subject头
52                $head=\"Subject: $subject\n\";
53                if(!empty($subject) && !ereg($head, $message))
54                {
55                    $message = $head.$message;
56                }
57               
58                //处理From头
59                $head=\"From: $from\n\";
60                if(!empty($from) && !ereg($head, $message))
61                {
62                    $message = $head.$message;
63                }
64
65                //处理To头
66                $head=\"To: $to\n\";
67                if(!empty($to) && !ereg($head, $message))
68                {
69                    $message = $head.$message;
70                }
71
72                //加上结束串
73                if(!ereg(\"\n\.\n\", $message))
74                    $message .= \"\n.\n\";
75                $this->show_debug($message, \"out\");
76                fputs($this->fp, $message);
77
78                $this->lastact=\"QUIT\n\";
79                if(!$this->do_command($this->lastact, \"250\"))
80                {
81                    fclose($this->fp);
82                    return false;
83                }
84            }
85            return true;
86        }
87        else
88        {
89            $this->show_debug(\"Connect failed!\", \"in\");
90            return false;
91        }
92    }
--------------------------------------------------------------------------------  有些意思很清楚的我就不说了。

  这个函数一共有四个参数,分别是$to表示收信人,$from表示发信人,$subject表求邮件主题和$message表示邮件体。如果处理成功则返回true,失败则返回false。

第8行,连接邮件服务器,如果成功响应码应为220。
第12行,设置阻塞模式,表示信息必须返回才能继续。详细说明看手册吧。
第16行,判断响应码是否为220,如果是,则继续处理,否则出错返回。
第22-27行,处理HELO指令,期望响应码为250。
第29-34行,处理MAIL FROM指令,期望响应码为250。
第36-41行,处理RCPT TO指令,期望响应码为250。
第44-49行,处理DATA指令,期望响应码为354。
第51-76行,生成邮件体,并发送。
第52-56行,如果$subject不为空,则查找邮件体中是否有主题部分,如果没有,则加上主题部分。
第59-63行,如果$from不为空,则查找邮件体中是否有发信人部分,如果没有,则加上发信人部分。
第66-70行,如果$to不为空,则查找邮件体中是否有收信人部分,如果没有,则加上收信人部分。
第73-74行,查找邮件体是否有了结束行,如果没有则加上邮件体的结束行(以\".\"作为单独的一行的特殊行)。
第76行,发送邮件体。
第78-83行,执行QUIT结否与服务器的连接,期望响应码为250。
第85行,返回处理成功标志(true)。
第81-91行,与服务器连接失败的处理。
 以上为整个send_mail类的实现,应该不是很难的。

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Comment trier les e-mails par expéditeur, sujet, date, catégorie, taille dans Outlook Comment trier les e-mails par expéditeur, sujet, date, catégorie, taille dans Outlook Feb 19, 2024 am 10:48 AM

Outlook propose de nombreux paramètres et fonctionnalités pour vous aider à gérer votre travail plus efficacement. L’une d’elles est l’option de tri qui vous permet de classer vos emails en fonction de vos besoins. Dans ce didacticiel, nous allons apprendre à utiliser la fonction de tri d'Outlook pour organiser les e-mails en fonction de critères tels que l'expéditeur, l'objet, la date, la catégorie ou la taille. Cela vous permettra de traiter et de trouver plus facilement des informations importantes, ce qui vous rendra plus productif. Microsoft Outlook est une application puissante qui facilite la gestion centralisée de vos plannings de messagerie et de calendrier. Vous pouvez facilement envoyer, recevoir et organiser des e-mails, tandis que la fonctionnalité de calendrier intégrée facilite le suivi de vos événements et rendez-vous à venir. Comment être dans Outloo

Que se passe-t-il lorsque vous utilisez Masquer mon e-mail sur iPhone ? Que se passe-t-il lorsque vous utilisez Masquer mon e-mail sur iPhone ? Feb 22, 2024 pm 09:19 PM

Apple propose une fonctionnalité axée sur la confidentialité appelée « Masquer l'adresse e-mail » qui permet aux utilisateurs de masquer leurs véritables adresses e-mail sur les applications ou les sites Web nécessitant l'enregistrement d'un compte. Nous vous avons appris à utiliser cette fonctionnalité sur votre iPhone. Voyons maintenant ce qui est possible lorsque vous l'utilisez dans votre travail quotidien. Qu'est-ce qu'une adresse e-mail masquée sur iPhone ? Le but de la fonction Masquer l'adresse e-mail est de protéger la confidentialité de votre adresse e-mail. En fournissant une adresse e-mail temporaire pour l'application et l'inscription sur le site Web, vous n'avez pas besoin de fournir directement la véritable adresse e-mail d'une personne. Cette fonctionnalité vous permet de générer plusieurs adresses e-mail iCloud pour vous inscrire à différents services, évitant ainsi de révéler votre véritable adresse e-mail.

Le processus de fonctionnement de l'hôte de service WIN10 occupant trop de CPU Le processus de fonctionnement de l'hôte de service WIN10 occupant trop de CPU Mar 27, 2024 pm 02:41 PM

1. Tout d'abord, nous cliquons avec le bouton droit sur l'espace vide de la barre des tâches et sélectionnons l'option [Gestionnaire des tâches], ou cliquons avec le bouton droit sur le logo de démarrage, puis sélectionnons l'option [Gestionnaire des tâches]. 2. Dans l'interface du Gestionnaire des tâches ouverte, nous cliquons sur l'onglet [Services] à l'extrême droite. 3. Dans l'onglet [Service] ouvert, cliquez sur l'option [Ouvrir le service] ci-dessous. 4. Dans la fenêtre [Services] qui s'ouvre, cliquez avec le bouton droit sur le service [InternetConnectionSharing(ICS)], puis sélectionnez l'option [Propriétés]. 5. Dans la fenêtre des propriétés qui s'ouvre, remplacez [Ouvrir avec] par [Désactivé], cliquez sur [Appliquer] puis cliquez sur [OK]. 6. Cliquez sur le logo Démarrer, puis cliquez sur le bouton d'arrêt, sélectionnez [Redémarrer] et terminez le redémarrage de l'ordinateur.

Comment envoyer des fichiers à d'autres sur TikTok ? Comment supprimer les fichiers que j'ai envoyés à d'autres ? Comment envoyer des fichiers à d'autres sur TikTok ? Comment supprimer les fichiers que j'ai envoyés à d'autres ? Mar 22, 2024 am 08:30 AM

Sur Douyin, les utilisateurs peuvent non seulement partager les détails de leur vie et leurs talents, mais également interagir avec d'autres utilisateurs. Dans ce processus, nous devons parfois envoyer des fichiers à d'autres utilisateurs, tels que des images, des vidéos, etc. Alors, comment envoyer des fichiers à d’autres sur Douyin ? 1. Comment envoyer des fichiers à d'autres sur Douyin ? 1. Ouvrez Douyin et entrez dans l'interface de discussion où vous souhaitez envoyer des fichiers. 2. Cliquez sur le signe « + » dans l'interface de discussion et sélectionnez « Fichier ». 3. Dans les options de fichiers, vous pouvez choisir d'envoyer des images, des vidéos, de l'audio et d'autres fichiers. Après avoir sélectionné le fichier que vous souhaitez envoyer, cliquez sur « Envoyer ». 4. Attendez que l'autre partie accepte votre fichier. Une fois que l'autre partie l'aura accepté, le fichier sera transféré avec succès. 2. Comment supprimer les fichiers envoyés à d'autres sur Douyin ? 1. Ouvrez Douyin et saisissez le texte que vous avez envoyé.

Comment implémenter un programme simple d'envoi d'e-mails en C++ ? Comment implémenter un programme simple d'envoi d'e-mails en C++ ? Nov 02, 2023 pm 05:35 PM

Comment implémenter un programme simple d’envoi d’e-mails en C++ ? Avec la popularité d'Internet, le courrier électronique est devenu un élément indispensable de la vie quotidienne et du travail des gens. En programmation C++, nous pouvons utiliser le protocole SMTP (SimpleMailTransferProtocol) pour implémenter un programme simple d'envoi d'e-mails. Cet article explique comment écrire un programme d'envoi d'e-mails de base en utilisant C++. Tout d’abord, nous devons préparer quelques outils et bibliothèques pour implémenter notre programme. d'abord

Un guide rapide sur la manipulation des fichiers CSV Un guide rapide sur la manipulation des fichiers CSV Dec 26, 2023 pm 02:23 PM

Apprenez rapidement à ouvrir et traiter des fichiers au format CSV Avec le développement continu de l'analyse et du traitement des données, le format CSV est devenu l'un des formats de fichiers les plus utilisés. Un fichier CSV est un fichier texte simple et facile à lire avec différents champs de données séparés par des virgules. Que ce soit dans la recherche académique, l'analyse commerciale ou le traitement de données, nous rencontrons souvent des situations où nous devons ouvrir et traiter des fichiers CSV. Le guide suivant vous montrera comment apprendre rapidement à ouvrir et traiter des fichiers au format CSV. Étape 1 : Comprendre le format de fichier CSV. Tout d'abord,

Apprenez à gérer les caractères spéciaux et à convertir les guillemets simples en PHP Apprenez à gérer les caractères spéciaux et à convertir les guillemets simples en PHP Mar 27, 2024 pm 12:39 PM

Dans le processus de développement PHP, la gestion des caractères spéciaux est un problème courant, en particulier dans le traitement des chaînes, les caractères spéciaux sont souvent échappés. Parmi eux, la conversion de caractères spéciaux en guillemets simples est une exigence relativement courante, car en PHP, les guillemets simples sont un moyen courant d'encapsuler des chaînes. Dans cet article, nous expliquerons comment gérer les guillemets simples de conversion de caractères spéciaux en PHP et fournirons des exemples de code spécifiques. En PHP, les caractères spéciaux incluent, sans s'y limiter, les guillemets simples ('), les guillemets doubles ("), la barre oblique inverse (), etc. Dans les chaînes

Comment gérer les formats de données XML et JSON dans le développement C# Comment gérer les formats de données XML et JSON dans le développement C# Oct 09, 2023 pm 06:15 PM

La gestion des formats de données XML et JSON dans le développement C# nécessite des exemples de code spécifiques. Dans le développement de logiciels modernes, XML et JSON sont deux formats de données largement utilisés. XML (Extensible Markup Language) est un langage de balisage permettant de stocker et de transmettre des données, tandis que JSON (JavaScript Object Notation) est un format d'échange de données léger. Dans le développement C#, nous devons souvent traiter et exploiter des données XML et JSON. Cet article se concentrera sur la façon d'utiliser C# pour traiter ces deux formats de données et les attacher.

See all articles