Wie kann ich eine E-Mail mit PHP senden?

Lesezeit: 10 Minuten

Wie kann ich eine E Mail mit PHP senden
Benutzer590849

Ich verwende PHP auf einer Website und möchte eine E-Mail-Funktionalität hinzufügen.

Ich habe WampServer Eingerichtet.

Wie sende ich eine E-Mail mit PHP?

  • Lesen Handbuch

    – diEcho

    17. März 2011 um 5:41 Uhr

Wie kann ich eine E Mail mit PHP senden
Muthu Kumaran

Mit PHP ist es möglich mail() Funktion. Denken Sie daran, dass die E-Mail-Funktion auf a nicht funktioniert lokal Server.

<?php
    $to      = '[email protected]';
    $subject="the subject";
    $message="hello";
    $headers="From: [email protected]"       . "\r\n" .
                 'Reply-To: [email protected]' . "\r\n" .
                 'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);
?>

Referenz:

  • Was ist, wenn ich eine E-Mail vom lokalen Server senden muss? Ich meine, gibt es eine Möglichkeit, auf den nächsten Mailing-Server zuzugreifen und ihn dazu zu bringen, E-Mails für mich zu senden? Ich meine, ich kann die Adresse eines Yahoo-Mailing-Servers finden und diesen Server dann für Mailing-Zwecke verwenden … ist das möglich?

    – Benutzer590849

    17. März 2011 um 5:42 Uhr

  • Sie müssen SMTP auf Ihrem lokalen Server konfigurieren. Sehen Sie sich diesen ähnlichen Beitrag an, stackoverflow.com/questions/4652566/php-mail-setup-in-xampp

    – Muthu Kumaran

    17. März 2011 um 5:48 Uhr


  • Hallo @MuthuKumaran, wenn das in Spam landet, gibt es eine gute Lösung, um es zu lösen, bitte antworten.

    – Muhammad Ashikuzzaman

    2. Dezember 2014 um 19:22 Uhr

  • @MuhammadAshikuzzaman Sie können das Spam-Problem nicht in PHP lösen. Bitte stellen Sie eine neue Frage auf der entsprechenden StackExchange-Website, falls diese noch relevant ist.

    – Uli Köhler

    26. Juli 2015 um 1:58 Uhr

  • Wie kann ich sicherstellen oder überprüfen, ob dies auf meinem lokalen Server funktioniert? Wenn dies nicht möglich ist, schlagen Sie bitte einige Alternativen vor. Danke.

    – abischah901

    22. August 2016 um 16:55 Uhr

1647078848 283 Wie kann ich eine E Mail mit PHP senden
norteo

Sie könnten auch die PHPMailer-Klasse unter verwenden https://github.com/PHPMailer/PHPMailer .

Es ermöglicht Ihnen, die Mail-Funktion zu nutzen oder einen SMTP-Server transparent zu nutzen. Es verarbeitet auch HTML-basierte E-Mails und Anhänge, sodass Sie keine eigene Implementierung schreiben müssen.

Die Klasse ist stabil und wird von vielen anderen Projekten wie Drupal, SugarCRM, Yii und Joomla!

Hier ist ein Beispiel von der Seite oben:

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host="smtp1.example.com;smtp2.example.com";  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username="[email protected]";                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure="tls";                            // Enable encryption, 'ssl' also accepted

$mail->From = '[email protected]';
$mail->FromName="Mailer";
$mail->addAddress('[email protected]', 'Joe User');     // Add a recipient
$mail->addAddress('[email protected]');               // Name is optional
$mail->addReplyTo('[email protected]', 'Information');
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');

$mail->WordWrap = 50;                                 // Set word wrap to 50 characters
$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject="Here is the subject";
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

  • Wenn Composer nicht verwendet wird: use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once('src/PHPMailer.php'); require_once('src/Exception.php');

    – Wturm

    28. Januar 2019 um 12:40 Uhr

  • Wenn Sie Google Mail auf Port 465 verwenden, müssen Sie den Host auf festlegen $mail->Host = 'ssl://smtp.gmail.com';

    – webcoder.co.uk

    25. März 2021 um 2:12 Uhr


Wenn Sie an html-formatierten E-Mails interessiert sind, stellen Sie sicher, dass Sie bestehen Content-type: text/html; in der Kopfzeile. Beispiel:

// multiple recipients
$to  = '[email protected]' . ', '; // note the comma
$to .= '[email protected]';

// subject
$subject="Birthday Reminders for August";

// message
$message="
<html>
<head>
  <title>Birthday Reminders for August</title>
</head>
<body>
  <p>Here are the birthdays upcoming in August!</p>
  <table>
    <tr>
      <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
    </tr>
    <tr>
      <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
    </tr>
    <tr>
      <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
    </tr>
  </table>
</body>
</html>
";

// To send HTML mail, the Content-type header must be set
$headers="MIME-Version: 1.0" . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n";
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";
$headers .= 'Bcc: [email protected]' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

Weitere Einzelheiten finden Sie in php Post Funktion.

  • Hallo, ich habe diesen Code satt, ich habe 3 Empfänger hinzugefügt, einen Hotmail, einen Gmail und einen meiner Website-E-Mail. Ich habe alle außer Hotmail erhalten. Haben Sie eine Idee, warum es bei Hotmail nicht funktioniert?

    – Antf

    4. November 2014 um 22:58 Uhr

  • Bitte überprüfen Sie in diesem Fall den Spam-Ordner.

    – Sumanand

    5. November 2014 um 12:28 Uhr

  • Habe ich schon gemacht, es ist nicht im Spam, es kommt überhaupt nicht an. Ich habe ein wenig mehr über das Thema gelesen und es scheint, dass Hotmail einen speziellen Header benötigt oder es der E-Mail nicht erlaubt, ihre Server zu passieren … Ich habe die Lösung jedoch immer noch nicht gefunden.

    – Antf

    5. November 2014 um 16:47 Uhr

  • Ich habe mein Problem gelöst, indem ich PHPMailer verwendet und meine E-Mail-Kontodaten mit SSL in das E-Mail-Objekt von PHPMailer eingegeben habe.

    – Antf

    5. November 2014 um 20:13 Uhr

  • Was ist, wenn die Nachricht HTML- und PHP-Inhalte enthält?

    Benutzer6761915

    16. September 2016 um 11:49 Uhr


Schauen Sie auch in das PEAR-Mail-Paket Birnen-Mail-Seite

Es scheint etwas robuster zu sein als die eingebaute Standardfunktion mail() (falls die Standardfunktion nicht ausreicht).

Hier ist ein Auszug aus dieser Seite, der zeigt, wie es verwendet wird. Verwendung von PEAR Mail send()

<?php
    include('Mail.php');

    $recipients="[email protected]";

    $headers['From']    = '[email protected]';
    $headers['To']      = '[email protected]';
    $headers['Subject'] = 'Test message';

    $body = 'Test message';

    $smtpinfo["host"] = "smtp.server.com";
    $smtpinfo["port"] = "25";
    $smtpinfo["auth"] = true;
    $smtpinfo["username"] = "smtp_user";
    $smtpinfo["password"] = "smtp_password";


    // Create the mail object using the Mail::factory method
    $mail_object =& Mail::factory("smtp", $smtpinfo); 

    $mail_object->send($recipients, $headers, $body);
?> 

1647078849 384 Wie kann ich eine E Mail mit PHP senden
John Slegers

Für die meisten Projekte verwende ich Swift-Mailer heutzutage. Es ist ein sehr flexibler und eleganter objektorientierter Ansatz zum Versenden von E-Mails, der von den gleichen Leuten entwickelt wurde, die uns das beliebte gegeben haben Symfony-Framework und Twig-Template-Engine.


Grundlegende Verwendung:

require 'mail/swift_required.php';

$message = Swift_Message::newInstance()
    // The subject of your email
    ->setSubject('Jane Doe sends you a message')
    // The from address(es)
    ->setFrom(array('[email protected]' => 'Jane Doe'))
    // The to address(es)
    ->setTo(array('[email protected]' => 'Frank Stevens'))
    // Here, you put the content of your email
    ->setBody('<h3>New message</h3><p>Here goes the rest of my message</p>', 'text/html');

if (Swift_Mailer::newInstance(Swift_MailTransport::newInstance())->send($message)) {
    echo json_encode([
        "status" => "OK",
        "message" => 'Your message has been sent!'
    ], JSON_PRETTY_PRINT);
} else {
    echo json_encode([
        "status" => "error",
        "message" => 'Oops! Something went wrong!'
    ], JSON_PRETTY_PRINT);
}

Sehen die offizielle Dokumentation für weitere Informationen zur Verwendung von Swift Mailer.

  • Hallo. Du sagtest Swift_MailTransport wenn Ihr Link zur Dokumentation sagt Swift_SendmailTransport. Bedeutet das, dass Sie sich auf eine ältere Version von Swift Mailer bezogen haben oder dass es sich um einen Tippfehler handelt, oder habe ich vielleicht etwas falsch verstanden? Ich muss eine ältere Version von Swift-Mailer installieren, weil ich kein PHP7 auf meinem Server habe. Ich muss also wissen, ob die Dokumentation für die aktuelle Version zu einer älteren Version des Pakets passt. Danke.

    – Jewgenij Afanasjew

    1. Februar 2018 um 0:47 Uhr

  • @YevgeniyAfanasyev: Meine Antwort war die richtige Vorgehensweise vor 2 Jahren, aber Swift_MailTransport ist seit Swiftmailer v5.4.5 veraltet. Wie auch immer, wenn Sie PHP 7 für Ihr Projekt nicht verwenden können, sollten Sie zu Swiftmailer v5.4.9 gehen. Das ist die letzte stabile Version, die noch PHP 5 unterstützt. Für die Dokumentation der Version v5.4.9 oder Details zu den Unterschieden zwischen v5.4.9 und v6.0.2 wenden Sie sich bitte an uns Fabien Potencier oder ein Problem ansprechen auf Github.

    – John Slegers

    1. Februar 2018 um 9:38 Uhr

  • Danke sehr. Daher gibt es wahrscheinlich keine Dokumentation für ältere Versionen, wenn die Distributionen verfügbar sind. Gut zu wissen.

    – Jewgenij Afanasjew

    2. Februar 2018 um 1:34 Uhr

1647078849 26 Wie kann ich eine E Mail mit PHP senden
SherylHohman

Die Hauptmethode zum Senden von E-Mails von PHP ist die Verwendung des integrierten PHP mail() Funktion, aber es gibt ein paar gebrauchsfertige SDKs, die die Integration erleichtern können:

  1. Swiftmailer
  2. PHPMailer
  3. Pepipost (funktioniert über HTTP, daher kann das Problem der SMTP-Portblockierung vermieden werden)
  4. E-Mail senden

PS Ich bin bei Pepipost angestellt.

  • Hallo. Du sagtest Swift_MailTransport wenn Ihr Link zur Dokumentation sagt Swift_SendmailTransport. Bedeutet das, dass Sie sich auf eine ältere Version von Swift Mailer bezogen haben oder dass es sich um einen Tippfehler handelt, oder habe ich vielleicht etwas falsch verstanden? Ich muss eine ältere Version von Swift-Mailer installieren, weil ich kein PHP7 auf meinem Server habe. Ich muss also wissen, ob die Dokumentation für die aktuelle Version zu einer älteren Version des Pakets passt. Danke.

    – Jewgenij Afanasjew

    1. Februar 2018 um 0:47 Uhr

  • @YevgeniyAfanasyev: Meine Antwort war die richtige Vorgehensweise vor 2 Jahren, aber Swift_MailTransport ist seit Swiftmailer v5.4.5 veraltet. Wie auch immer, wenn Sie PHP 7 für Ihr Projekt nicht verwenden können, sollten Sie zu Swiftmailer v5.4.9 gehen. Das ist die letzte stabile Version, die noch PHP 5 unterstützt. Für die Dokumentation der Version v5.4.9 oder Details zu den Unterschieden zwischen v5.4.9 und v6.0.2 wenden Sie sich bitte an uns Fabien Potencier oder ein Problem ansprechen auf Github.

    – John Slegers

    1. Februar 2018 um 9:38 Uhr

  • Danke sehr. Daher gibt es wahrscheinlich keine Dokumentation für ältere Versionen, wenn die Distributionen verfügbar sind. Gut zu wissen.

    – Jewgenij Afanasjew

    2. Februar 2018 um 1:34 Uhr

Für zukünftige Leser: Versuchen Sie dies, wenn andere Antworten nicht funktionieren (wie es bei mir der Fall war):

1.) Herunterladen PHPMaileröffnen Sie die ZIP-Datei und extrahieren Sie den Ordner in Ihr Projektverzeichnis.

3.) Benennen Sie das extrahierte Verzeichnis um in PHPMailer und schreiben Sie den folgenden Code in Ihr PHP-Skript (das Skript muss sich außerhalb der PHPMailer Mappe)

<?php
// PHPMailer classes into the global namespace
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception;
// Base files 
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
// create object of PHPMailer class with boolean parameter which sets/unsets exception.
$mail = new PHPMailer(true);                              
try {
    $mail->isSMTP(); // using SMTP protocol                                     
    $mail->Host="smtp.gmail.com"; // SMTP host as gmail 
    $mail->SMTPAuth = true;  // enable smtp authentication                             
    $mail->Username="[email protected]";  // sender gmail host              
    $mail->Password = 'password'; // sender gmail host password                          
    $mail->SMTPSecure="tls";  // for encrypted connection                           
    $mail->Port = 587;   // port for SMTP     

    $mail->setFrom('[email protected]', "Sender"); // sender's email and name
    $mail->addAddress('[email protected]', "Receiver");  // receiver's email and name

    $mail->Subject="Test subject";
    $mail->Body    = 'Test body';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) { // handle error.
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
?>

993320cookie-checkWie kann ich eine E-Mail mit PHP senden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy