完整邮件发送类_PHP教程
完整邮件发送类
class smtp
{
/* Public Variables */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;
/* Private Variables */
var $sock;
/* Constractor */
function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
$this->host_name = "localhost"; //is used in HELO command
$this->log_file = "";
$this->sock = FALSE;
}
/* Main Function */
function sendmail($to, $from ,$fromname, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = ""){
$mail_from = $this->get_address($this->strip_comment($from));
$body = ereg_replace("(^|(rn))(.)", "1.3", $body);
$header .= "MIME-Version:1.0rn";
if($mailtype=="HTML"){
$header .= "Content-Type:text/html;charset=utf-8rn";
}
$header .= "To: ".$to."rn";
if ($cc != ""){
$header .= "Cc: ".$cc."rn";
}
$header .= "From: $fromnamern";
$header .= "Subject: ".$subject."rn";
$header .= $additional_headers;
$header .= "Date: ".date("r")."rn";
$header .= "X-Mailer:By Redhat (PHP/".php教程version().")rn";
list($msec, $sec) = explode(" ", microtime());
$header .= "Message-ID: rn";
$TO = explode(",", $this->strip_comment($to));
if ($cc != ""){
$TO = array_merge($TO, explode(",", $this->strip_comment($cc)));
}
if ($bcc != ""){
$TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));
}
$sent = TRUE;
foreach ($TO as $rcpt_to){
$rcpt_to = $this->get_address($rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)){
$this->log_write("Error: Cannot send email to ".$rcpt_to."n");
$sent = FALSE;
continue;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)){
$this->log_write("E-mail has been sent to n");
}else{
$this->log_write("Error: Cannot send email to n");
$sent = FALSE;
}
fclose($this->sock);
$this->log_write("Disconnected from remote hostn");
}
return $sent;
}
/* Private Functions */
function smtp_send($helo, $from, $to, $header, $body = ""){
if (!$this->smtp_putcmd("HELO", $helo)){
return $this->smtp_error("sending HELO command");
}
#auth
if($this->auth){
if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))){
return $this->smtp_error("sending HELO command");
}
if (!$this->smtp_putcmd("", base64_encode($this->pass))){
return $this->smtp_error("sending HELO command");
}
}
if (!$this->smtp_putcmd("MAIL", "FROM:")){
return $this->smtp_error("sending MAIL FROM command");
}
if (!$this->smtp_putcmd("RCPT", "TO:")){
return $this->smtp_error("sending RCPT TO command");
}
if (!$this->smtp_putcmd("DATA")){
return $this->smtp_error("sending DATA command");
}
if (!$this->smtp_message($header, $body)){
return $this->smtp_error("sending message");
}
if (!$this->smtp_eom()){
return $this->smtp_error("sending
}
if (!$this->smtp_putcmd("QUIT")){
return $this->smtp_error("sending QUIT command");
}
return TRUE;
}
function smtp_sockopen($address){
if ($this->relay_host == ""){
return $this->smtp_sockopen_mx($address);
}
else{
return $this->smtp_sockopen_relay();
}
}
function smtp_sockopen_relay(){
$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."n");
$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())){
$this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."n");
$this->log_write("Error: ".$errstr." (".$errno.")n");
return FALSE;
}
$this->log_write("Connected to relay host ".$this->relay_host."n");
return TRUE;;
}
function smtp_sockopen_mx($address){
$domain = ereg_replace("^.+@([^@]+)$", "1", $address);
if (!@getmxrr($domain, $MXHOSTS)){
$this->log_write("Error: Cannot resolve MX "".$domain.""n");
return FALSE;
}
foreach ($MXHOSTS as $host){
$this->log_write("Trying to ".$host.":".$this->smtp_port."n");
$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())){
$this->log_write("Warning: Cannot connect to mx host ".$host."n");
$this->log_write("Error: ".$errstr." (".$errno.")n");
continue;
}
$this->log_write("Connected to mx host ".$host."n");
return TRUE;
}
$this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")n");
return FALSE;
}
function smtp_message($header, $body){
fputs($this->sock, $header."rn".$body);
$this->smtp_debug("> ".str_replace("rn", "n"."> ", $header."n> ".$body."n> "));
return TRUE;
}
function smtp_eom(){
fputs($this->sock, "rn.rn");
$this->smtp_debug(". [EOM]n");
return $this->smtp_ok();
}
function smtp_ok(){
$response = str_replace("rn", "", fgets($this->sock, 512));
$this->smtp_debug($response."n");
if (!ereg("^[23]", $response)){
fputs($this->sock, "QUITrn");
fgets($this->sock, 512);
$this->log_write("Error: Remote host returned "".$response.""n");
return FALSE;
}
return TRUE;
}
function smtp_putcmd($cmd, $arg = ""){
if($arg != ""){
if($cmd==""){
$cmd = $arg;
}
else{
$cmd = $cmd." ".$arg;
}
}
fputs($this->sock, $cmd."rn");
$this->smtp_debug("> ".$cmd."n");
return $this->smtp_ok();
}
function smtp_error($string){
$this->log_write("Error: Error occurred while ".$string.".n");
return FALSE;
}
function log_write($message){
$this->smtp_debug($message);
if ($this->log_file == ""){
return TRUE;
}
$message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;
if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))){
$this->smtp_debug("Warning: Cannot open log file "".$this->log_file.""n");
return FALSE;;
}
flock($fp, LOCK_EX);
fputs($fp, $message);
fclose($fp);
return TRUE;
}
function strip_comment($address){//去除"()"
$comment = "([^()]*)";
while (ereg($comment, $address)){
$address = ereg_replace($comment, "", $address);
}
return $address;
}
function get_address($address){
$address = ereg_replace("([trn])+", "", $address);//t 制表符 r 回车符 n 换行符 +匹配前面的子表达式一次或多次
$address = ereg_replace("^.*.*$", "1", $address);
return $address;
}
function smtp_debug($message){
if ($this->debug){
echo $message;
}
}
}

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Fehlt das Outlook-Mail-Symbol in der Systemsteuerung von Windows 11? Diese unerwartete Situation hat bei einigen Personen, die sich für ihre Kommunikationsbedürfnisse auf OutlookMail verlassen, Verwirrung und Besorgnis hervorgerufen. Warum werden meine Outlook-E-Mails nicht in der Systemsteuerung angezeigt? Es kann mehrere mögliche Gründe dafür geben, dass in der Systemsteuerung keine Outlook-Mailsymbole angezeigt werden: Outlook ist nicht korrekt installiert. Durch die Installation von Office-Anwendungen aus dem Microsoft Store wird das Mail-Applet nicht zur Systemsteuerung hinzugefügt. Der Speicherort der Datei mlcfg32.cpl in der Systemsteuerung fehlt. Der Pfad zur Datei mlcfg32.cpl in der Registrierung ist falsch. Das Betriebssystem ist derzeit nicht für die Ausführung dieser Anwendung konfiguriert

Wenn Sie feststellen, dass beim Drucken eines Seriendruckdokuments mit Word leere Seiten erscheinen, hilft Ihnen dieser Artikel weiter. Serienbrief ist eine praktische Funktion, mit der Sie ganz einfach personalisierte Dokumente erstellen und an mehrere Empfänger senden können. In Microsoft Word genießt die Serienbrieffunktion hohes Ansehen, da sie Benutzern hilft, Zeit zu sparen, indem sie für jeden Empfänger denselben Inhalt manuell kopieren. Um das Serienbriefdokument auszudrucken, können Sie auf die Registerkarte Mailings gehen. Einige Word-Benutzer haben jedoch berichtet, dass der Drucker beim Versuch, ein Serienbriefdokument zu drucken, eine leere Seite druckt oder überhaupt nicht druckt. Dies kann an einer falschen Formatierung oder Druckereinstellungen liegen. Überprüfen Sie die Dokument- und Druckereinstellungen und stellen Sie sicher, dass Sie vor dem Drucken eine Vorschau des Dokuments anzeigen, um sicherzustellen, dass der Inhalt korrekt ist. Wenn

PHP sendet E-Mails asynchron: Vermeiden Sie lange Wartezeiten auf den Versand von E-Mails. Einleitung: In der Webentwicklung ist das Versenden von E-Mails eine der häufigsten Funktionen. Da das Senden von E-Mails jedoch eine Kommunikation mit dem Server erfordert, führt dies häufig dazu, dass Benutzer lange warten müssen, bis die E-Mail gesendet wird. Um dieses Problem zu lösen, können wir PHP verwenden, um E-Mails asynchron zu versenden und so das Benutzererlebnis zu optimieren. In diesem Artikel erfahren Sie anhand spezifischer Codebeispiele, wie Sie PHP implementieren, um E-Mails asynchron zu versenden und lange Wartezeiten zu vermeiden. 1. Das asynchrone Senden von E-Mails verstehen

Auf Douyin können Benutzer nicht nur ihre Lebensdetails und Talente teilen, sondern auch mit anderen Benutzern interagieren. In diesem Prozess müssen wir manchmal Dateien wie Bilder, Videos usw. an andere Benutzer senden. Wie kann man also auf Douyin Dateien an andere senden? 1. Wie kann ich auf Douyin Dateien an andere senden? 1. Öffnen Sie Douyin und rufen Sie die Chat-Oberfläche auf, an die Sie Dateien senden möchten. 2. Klicken Sie in der Chat-Oberfläche auf das „+“-Zeichen und wählen Sie „Datei“. 3. In den Dateioptionen können Sie auswählen, ob Sie Bilder, Videos, Audiodateien und andere Dateien senden möchten. Nachdem Sie die Datei ausgewählt haben, die Sie senden möchten, klicken Sie auf „Senden“. 4. Warten Sie, bis die andere Partei Ihre Datei akzeptiert. Sobald die andere Partei sie akzeptiert, wird die Datei erfolgreich übertragen. 2. Wie lösche ich Dateien, die auf Douyin an andere gesendet wurden? 1. Öffnen Sie Douyin und geben Sie den von Ihnen gesendeten Text ein.

WhatsApp hat eine neue Option eingeführt, die es Benutzern ermöglicht, Fotos und Videos in hoher Auflösung über die Messaging-Plattform zu versenden. Lesen Sie weiter, um herauszufinden, wie es geht. WhatsApp hat ein Update veröffentlicht, das iPhone- und Android-Benutzern das Versenden von Fotos und Videos in hoher Auflösung ermöglicht und damit endlich die Einschränkungen des Dienstes bei der Medienfreigabe in geringer Qualität behebt. Die Option heißt „HD-Qualität“ und bedeutet, dass Benutzer klarere Fotos und Videos mit minimaler Komprimierung senden können. Beispielsweise können auf dem iPhone aufgenommene Bilder jetzt mit einer Auflösung von 3024x4032 statt wie bisher maximal 920x1280 gesendet werden, während Videos mit einer Auflösung von 1280x718 statt 848x476 gesendet werden können.

PHP-E-Mail-Tracking-Funktion: Benutzerverhalten und Feedback zu E-Mails verstehen In der modernen Gesellschaft sind E-Mails zu einem unverzichtbaren Bestandteil des täglichen Lebens und der Arbeit der Menschen geworden. Für Unternehmen ist das Versenden von E-Mails eine der wichtigsten Möglichkeiten, mit Kunden zu kommunizieren und Produkte oder Dienstleistungen zu bewerben. Woher wissen wir jedoch nach dem Versenden einer E-Mail, ob sie empfangen und gelesen wurde und wie der Benutzer auf den Inhalt der E-Mail reagiert hat? Zu diesem Zeitpunkt kommt der E-Mail-Tracking-Funktion eine besondere Bedeutung zu. Die E-Mail-Tracking-Funktion kann uns helfen, das Nutzerverhalten und Feedback zu E-Mails zu verstehen

Was ist Echtzeit-Voicemail-Transkription? Live-Voicemail-Transkription ist eine innovative Funktion, die in iOS 16 eingeführt wurde und es iPhone-Benutzern ermöglicht, eine Live-Transkription ihrer Voicemail anzusehen, während sie diese verlassen. Diese Funktion nutzt fortschrittliche Spracherkennungstechnologie, um gesprochene Wörter in Text umzuwandeln. Dies bietet eine bequeme und leicht zugängliche Möglichkeit, über die neuesten Nachrichten auf dem Laufenden zu bleiben, ohne sie vollständig anhören zu müssen. Vorteile der Verwendung der Live-Voicemail-Transkription Die Live-Voicemail-Transkription bietet iPhone-Benutzern mehrere Vorteile: Verbesserte Produktivität: Durch die Echtzeit-Transkription spart die Live-Voicemail-Transkription den Benutzern Zeit und Aufwand, da sie nicht mehr die gesamte Voicemail abhören müssen. Dadurch können Benutzer den Inhalt von Voicemails schnell scannen und ihre Antworten priorisieren. Zugänglichkeit für hörgeschädigte Benutzer

Jedes Jahr bevor Apple eine neue Hauptversion von iOS und macOS veröffentlicht, können Benutzer die Betaversion mehrere Monate im Voraus herunterladen, um sie zuerst zu testen. Da die Software sowohl von der Öffentlichkeit als auch von Entwicklern verwendet wird, hat Apple für beide Entwickler- und öffentliche Versionen herausgebracht, bei denen es sich um öffentliche Betaversionen der Entwickler-Betaversionen handelt. Was ist der Unterschied zwischen der Entwicklerversion und der öffentlichen Version von iOS? Im wahrsten Sinne des Wortes handelt es sich bei der Entwicklerversion um eine Entwickler-Betaversion und bei der öffentlichen Version um eine öffentliche Betaversion. Die Entwicklerversion und die öffentliche Version richten sich an unterschiedliche Zielgruppen. Die Entwicklerversion wird von Apple zum Testen durch Entwickler verwendet. Sie benötigen ein Apple-Entwicklerkonto, um sie herunterzuladen und zu aktualisieren.
