378 Stimmen

Wie kann ich eine E-Mail mit PHP versenden?

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

Ich habe WampServer installiert.

Wie kann ich eine E-Mail mit PHP versenden?

14voto

Ahtisham Punkte 7426

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 entpacken 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 außerhalb der PHPMailer Ordner)

<?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 = 'sender@gmail.com';  // sender gmail host              
    $mail->Password = 'password'; // sender gmail host password                          
    $mail->SMTPSecure = 'tls';  // for encrypted connection                           
    $mail->Port = 587;   // port for SMTP     

    $mail->setFrom('sender@gmail.com', "Sender"); // sender's email and name
    $mail->addAddress('receiver@gmail.com', "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;
}
?>

13voto

Dibya Sahoo Punkte 821

Die Hauptmethode zum Versenden von E-Mails aus PHP ist die Verwendung der eingebauten mail() Funktion, aber es gibt eine Reihe gebrauchsfertiger SDKs, die die Integration erleichtern können:

  1. Swiftmailer
  2. PHPMailer
  3. Pepipost (funktioniert über HTTP, so dass das Problem der SMTP-Portsperre vermieden werden kann)
  4. Sendmail

P.S.: Ich bin bei Pepipost beschäftigt.

9voto

lyndact Punkte 1

Versuchen Sie dies:

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";

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

8voto

Dies ist eine sehr einfache Methode, um eine einfache Text-E-Mail mit der Mail-Funktion zu versenden.

<?php
$to = 'SomeOtherEmailAddress@Domain.com';
$subject = 'This is subject';
$message = 'This is body of email';
$from = "From: FirstName LastName <SomeEmailAddress@Domain.com>";
mail($to,$subject,$message,$from);

8voto

Paulo Buchsbaum Punkte 2113

Die native PHP-Funktion mail() funktioniert bei mir nicht. Es wird die Meldung ausgegeben:

503 Dieser Mailserver erfordert eine Authentifizierung, wenn Sie versuchen, zu senden an eine nicht-lokale E-Mail-Adresse

Daher verwende ich normalerweise PHPMailer Paket

Ich habe die Version 5.2.23 von heruntergeladen: GitHub .

Ich habe gerade 2 Dateien ausgewählt und sie in meinen PHP-Quellcode Root eingefügt

class.phpmailer.php
class.smtp.php

In PHP muss die Datei hinzugefügt werden

require_once('class.smtp.php');
require_once('class.phpmailer.php');

Danach ist es nur noch Code:

require_once('class.smtp.php');
require_once('class.phpmailer.php');
... 
//----------------------------------------------
// Send an e-mail. Returns true if successful 
//
//   $to - destination
//   $nameto - destination name
//   $subject - e-mail subject
//   $message - HTML e-mail body
//   altmess - text alternative for HTML.
//----------------------------------------------
function sendmail($to,$nameto,$subject,$message,$altmess)  {

  $from  = "yourcontact@yourdomain.com";
  $namefrom = "yourname";
  $mail = new PHPMailer();  
  $mail->CharSet = 'UTF-8';
  $mail->isSMTP();   // by SMTP
  $mail->SMTPAuth   = true;   // user and password
  $mail->Host       = "localhost";
  $mail->Port       = 25;
  $mail->Username   = $from;  
  $mail->Password   = "yourpassword";
  $mail->SMTPSecure = "";    // options: 'ssl', 'tls' , ''  
  $mail->setFrom($from,$namefrom);   // From (origin)
  $mail->addCC($from,$namefrom);      // There is also addBCC
  $mail->Subject  = $subject;
  $mail->AltBody  = $altmess;
  $mail->Body = $message;
  $mail->isHTML();   // Set HTML type
//$mail->addAttachment("attachment");  
  $mail->addAddress($to, $nameto);
  return $mail->send();
}

Es funktioniert wie ein Zauber

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X