The classic email sending library for PHP

PHPMailer or SwiftMailer? [duplicate]

Possible Duplicate:
PhpMailer vs. Swiftmailer?

I have always used PHP's built in mail() function and it has always worked for me without fail and does the job i want it to.

Now some maybe thinking 'Why fix something that isn't broke ?'.

My answer to these in-case someone asks is:

    I have never used a framework before if that's what they are classified as or perhaps they are called a library i don't know.
    I want to start using one and have looked over the documentation and both seem very easy to use.
    As i implement new features into my site, my site is depending more on sending emails etc meaning PHP's mail() function is not upto the job anymore.
    They would be easier to use when dealing with advanced things like attachments, html and text versions etc; that would otherwise be difficult or impossible using PHP's mail() function.
    I have never used SMTP, and i have looked into it and i can see i can use it along with SSL on my hosting package. After plenty of reading it seems that not only is SMTP more reliable and more widely used, emails are less likely to be marked as spam, using either of the frameworks will improve performance, reliability and more secure because it uses SMTP with SSL.

Now i am not sure what the other benefits are using SMTP, maybe someone could give me some more reasons why it's better ? as am looking to find out more information about SMTP benefits.

I have looked at both documentation looked at the features they both offer, searched google for PHPMailer vs SwiftMailer but not found anything saying why one is better than the other.

Does anyone have experience with any of them?

Does one have more benefits than the other?

Would you say one is better than the other?

I did read allot of people saying PHPMailer was a dead project but those posts was relatively old. Looking at PHPMailer's website it seems the project is and has been back in development for some time now.

Thanks for anything you can provide on either PHPMailer and/or SwiftMailer. Hopefully i can decide on one or the other as at the moment i have no reason on why i would choose one over the other.


Source: (StackOverflow)

Changing the Return-path using PHPMailer

Is there a way to change the return-path using PHPMailer

I did the following and it did not work


I'm using the following statement to send mails

if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;

    } else {
        //Building the reporting email to report on all the mails send 
        echo "Message REPORT sent!\n";

I get the email but the return path does not change?

Source: (StackOverflow)

Add attachment through PHPMailer

I have this following piece of code of PHPMailer. The problem is, that the file uploads to the server successfully but the attachment is not sent in the mail. The attachment code seems right to the best of my knowledge. Please review the code and let me know where have I gone wrong.


<form name="contactform" method="post" action="send1.php" enctype="multipart/form-data">
<table width="100%" border="0">
 <td id="ta">
 <label for="title">Title *</label>
 <td id="ta">
 <select name="title">
 <option value="0">Title</option>
 <option value="1">Mr.</option>
 <option value="2">Ms.</option>
 <option value="3">Mrs.</option>
 </select></td></tr><tr><td id="ta">
  <label for="first_name">First Name *</label>
 <td id="ta">
  <input  type="text" name="first_name" maxlength="50" size="30" required="required">
 <td id="ta">
  <label for="last_name">Last Name *</label>
 <td  id="ta">
  <input  type="text" name="last_name" maxlength="50" size="30" required="required">
 <td id="ta">
  <label for="email">Email Address *</label>
 <td  id="ta">
  <input  type="text" name="email" maxlength="80" size="30" required="required">
 <td id="ta">
  <label for="telephone">Telephone Number *</label>
 <td  id="ta">
  <input  type="text" name="telephone" maxlength="30" size="30" required="required">
 <td id="ta">
  <label for="comments">Details</label>
 <td  id="ta">
  <textarea  name="comments" maxlength="100000" cols="25" rows="6"></textarea>
<td id="ta">
    <label for="file">Or upload a file (only word, excel or pdf)</label>
<td  id="ta">
<input type="file" name="file">
 <td colspan="2" style="text-align:center" id="ta">
  <input type="submit" value="Submit">




if(isset($_POST['email'])) {

    //$email_to = "hidden";
    //$email_subject = "Request for Portfolio check up from ".$first_name." ".$last_name;

    $title = array('Title', 'Mr.', 'Ms.', 'Mrs.');
    $selected_key = $_POST['title'];
    $selected_val = $title[$_POST['title']]; 

    $first_name = $_POST['first_name']; // required
    $last_name = $_POST['last_name']; // required
    $email_from = $_POST['email']; // required
    $telephone = $_POST['telephone']; // not required
    $comments = $_POST['comments']; // required

    echo "<script> alert('Please enter your title')</script>";
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
     $email_message = "";
    $email_message .="Title: ".$selected_val."\n";
    $email_message .= "First Name: ".clean_string($first_name)."\n";
    $email_message .= "Last Name: ".clean_string($last_name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Telephone: ".clean_string($telephone)."\n";
    $email_message .= "Comments: ".clean_string($comments)."\n";

    $allowedExts = array("doc", "docx", "xls", "xlsx", "pdf");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "application/pdf")
|| ($_FILES["file"]["type"] == "application/msword")
|| ($_FILES["file"]["type"] == "application/excel")
|| ($_FILES["file"]["type"] == "application/")
|| ($_FILES["file"]["type"] == "application/x-excel")
|| ($_FILES["file"]["type"] == "application/x-msexcel")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))

&& in_array($extension, $allowedExts))
  if ($_FILES["file"]["error"] > 0)
    echo "<script>alert('Error: " . $_FILES["file"]["error"] ."')</script>";
        $de=$d . basename($_FILES['file']['name']);
    move_uploaded_file($_FILES["file"]["tmp_name"], $de);
$fileName = $_FILES['file']['name'];
    $filePath = $_FILES['file']['tmp_name'];
     //add only if the file is an upload
  echo "<script>alert('Invalid file')</script>";

// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
//Create a new PHPMailer instance
$mail = new PHPMailer();
//Tell PHPMailer to use SMTP
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug  = 0;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host       = "hidden";
//Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port       = 25;
//Whether to use SMTP authentication
$mail->SMTPAuth   = true;
//Username to use for SMTP authentication
$mail->Username   = "hidden";
//Password to use for SMTP authentication
$mail->Password   = "hidden";
//Set who the message is to be sent from
$mail->SetFrom($email_from, $first_name.' '.$last_name);
//Set an alternative reply-to address
//$mail->AddReplyTo('','First Last');
//Set who the message is to be sent to
$mail->AddAddress('hidden', 'hidden');
//Set the subject line
$mail->Subject = 'Request for Profile Check up';
//Read an HTML message body from an external file, convert referenced images to embedded, convert HTML into a basic plain-text alternative body
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//Attach an image file
$mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']);
//Send the message, check for errors
if(!$mail->Send()) {
  echo "<script>alert('Mailer Error: " . $mail->ErrorInfo."')</script>";
} else {
  echo "<script>alert('Your request has been submitted. We will contact you soon.')</script>";
  Header('Location: main.php');

EDIT The mail sends successfully with all the details too. Just that the attachment won't send.

EDIT 2: SOLVED Changed $mail->MsgHTML to $mail->Body and it worked!

Source: (StackOverflow)

Gmail Sending Limits

I'm developing software on a website that uses PHPMailer to send mail through our company's Gmail accounts via SMTP. With the software, a customer signs up for the site and receives a receipt and a video ticket. Two separate emails per customer at sign up. Then, before the event starts we want to resend all the video tickets.

I was wondering what the limits were about sending emails. How many emails can we send per minute, per hour, per day via SMTP using PHPMailer?



We are using Google Apps for business

Source: (StackOverflow)

insert image in mail body

How to insert image in mail body when user click on send button. I am using php mail

Source: (StackOverflow)

PHPMailer - SMTP ERROR: Password command failed when send mail from my server

i have used phpmailer() concept to send mail to users from my shared server using php script,

but i cant able to send even everything is right in my script according to phpmailer code.,

My code like this:

  $message = " This is testing message from my server";

  $mail = new PHPMailer(); // create a new object
  $mail->IsSMTP(); // enable SMTP
  $mail->Host = "";
  $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
  $mail->SMTPAuth = true; // authentication enabled
  $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
  $mail->Port = 465; // or 587
  $mail->Username = ""; // My gmail username
  $mail->Password = "************"; // My Gmail Password
  $mail->Subject = "Test Mail from my Server";
  $mail->Body = $message;
    print json_encode("SUCCESS");
    echo "Mailer Error: " . $mail->ErrorInfo;


Note : i have used " GMail " as my SMTP server and SMTPSecure is " ssl " and port is "465" and username & passwords are my GMail username & password

I used VPS shared server and i kept my php script on that server.,

i think there is no problem in my php script and i dont know why it wont work and

I got the ERROR like this .,

  2014-02-21 12:30:11   CLIENT -> SERVER: EHLO
  2014-02-21 12:30:11   CLIENT -> SERVER: AUTH LOGIN
  2014-02-21 12:30:11   CLIENT -> SERVER: bW9vcnRoaS5tcmsxMEBnbWFpbC5jb20=
  2014-02-21 12:30:11   CLIENT -> SERVER: OTk0MTI0MTE0MA==
  2014-02-21 12:30:11   SMTP ERROR: Password command failed: 534-5.7.14 
  534-5.7.14 i-_eumA> Please log in via your web browser and then try again.
  534 5.7.14 54 k76sm17979938yho.18 - gsmtp
  2014-02-21 12:30:11   CLIENT -> SERVER: QUIT
  " The ERROR is  "  SMTP connect() failed.

i almost have couple of weeks getting struggle to solve., But i cant.,

Please give some solution for that .,

Thanks in Advance.,

Remember : I user Shared Server Name '' and i want to use gmail as my smtp server to send mail to users.,

i am waiting for some reply

Source: (StackOverflow)

Add HTML formatting in phpmailer

I am using PHP mailer to send an online form directly to email. I want to edit the form like this:

$message = '<p>The following request was sent from: '</p>;
$message .= '<p>Name: '.$name.'</p><br />';
$message .= '<p>Phone: '.$phone.'</p><br />';
$message .= '<p>Email: '.$email.'</p><br />';

However, in the email I receive back, I get the <p>, <br />, etc. Not the formatting I want, but the actual HTML. It has always worked for me, then I realized I was using the stock PHP mail function. not sure if PHP mailer has different parameters OR if I just missing small here?

Where would I set the headers for text/html?

    $mail = new PHPMailer();
    $mail -> IsSMTP();
    $mail -> Host = "---";
    $mail -> Port = 25;
    $mail -> SMTPAuth = false;
    $mail -> Username = EMAIL_USER;
    $mail -> Password = EMAIL_PASS;
    $mail -> FromName = $from_name;
    $mail -> From = $from;
    $mail -> Subject = $subject;
    $mail -> Body = $message;
    $mail -> AddAddress("---");

    $result = $mail -> Send();

Source: (StackOverflow)

sending email via php mail function goes to spam

I am facing problem in sending mail to my inbox (gmail account) but everytime it goes to spam folder. Here is the code snippet

     //$ticketDetail is array which contain required information to send.
       sendOwnershipEmail('', $ticketDetail);

       function sendOwnershipEmail($email, $ticketDetail) {
            $param = new stdClass();

$param->content = "<div>
    <div><img src='".$ticketDetail[0]['image_path']."'/></div><br/>
    <div>Ticket with ticket number ".$ticketDetail[0]['ticket_number']." has been requested for tranfer from <div/>
    <div>".$ticketDetail[0]['oldDepartment']." to ".$ticketDetail[0]['newDepartment']." Department <div/>

            $param->sendTo = $email;
            $param->subject = "Request for Department transfer";


    function sendMailFunction($param) {
            $to = $param->sendTo;
            $subject = $param->subject;
            $headers = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'From:' . "\r\n";
            $message = "<html><head>" .
                   "<meta http-equiv='Content-Language' content='en-us'>" .
                   "<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>" .
                   "</head><body>" .$param->content.        
          mail($to, $subject, $message, $headers);

And I have tried a lot like setting headers as Reply-To, Return-Path etc but every time it goes to spam. Can u please figure out whats the problem?

Source: (StackOverflow)

"Password not accepted from server: 535 Incorrect authentication data" when sending with GMail and phpMailer

I have the same php script running on localhost - my PC with XAMPP and on a hosted server. It works from my PC, but not from the hosted server.

When I send it from the hosted server, I get the following output:

SMTP -> ERROR: Password not accepted from server: 535 Incorrect authentication data  
SMTP -> ERROR: RCPT not accepted from server: 550-Please turn on SMTP Authentication in your mail client, or login to the 550-IMAP/POP3 server before sending your message. 550-( []:50958 is not permitted to relay through 550 this server without authentication.  
SMTP Error: The following recipients failed: FAILED

I suspect there is a configuration setting that needs to be changed on the server, but I don't know which one. Any advice would be greatly appreciated!

Here is the code:

function send_gmail ($recipients, $subject, $message, $attachment_filenames = array()) 
  global $email_address, $email_password, $email_name;
  require_once ($_SERVER['DOCUMENT_ROOT']. '/php/PHPMailer/class.phpmailer.php');   

  $body  = $message;
  $body  = str_replace("\\", '', $body);
  $mail = new PHPMailer();
  $mail->CharSet = "UTF-8";
  $mail->Host       = "";      // sets GMAIL as the SMTP server
  $mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing) 0 - none; 1 - errors & messages; 2 - messages only
  $mail->SMTPAuth   = true;                  // enable SMTP authentication
  $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
  $mail->Port       = 465;                   // set the SMTP port
  $mail->Username   = $email_address;  // GMAIL username
  $mail->Password   = $email_password; // GMAIL password
  $mail->FromName   = $email_name;
  $mail->Subject    = $subject;
  $mail->IsHTML(true); // send as HTML

  if (isset ($recipients[0]))
    foreach ($recipients AS $to)
        $to_pieces = explode (",", $to, 2);
        $to_email = trim ($to_pieces[0]);
        if (isset ($to_pieces[1]))
            $to_name = trim ($to_pieces[1]);
            $to_name = " ";
        $mail->AddAddress($to_email, $to_name);
    $mail->IsHTML(true); // send as HTML

    if ($mail->Send()){
        return TRUE;
    } else {
        return FALSE;
    return FALSE;


Source: (StackOverflow)

how to add file attachement in PHPMailer?

I am using PHPMailer for mailing facility, I want add file with each mail from my server.

following is folder structure on my server.

  - main-folder
    - files
       - a.doc
       - b.docx
    - mailer
       - mailer.php

i have try following line in my mailer.php file but it is not working

$mail->AddAttachment('main-folder/files/a.doc', 'pricelist.doc'); 

do anyone have any idea how to do this?

Source: (StackOverflow)

Rupee symbol in mail

I am using PHP mailer to send mails to my clients. I need to insert the Rupee symbol in the body of the mails.

Rupee symbol

How can I do this?

Source: (StackOverflow)

Sending emails through SMTP with PHPMailer

I'm trying to send SMTP e-mails using PHPMailer, but I keep getting this error message, any ideas how to get rid of it?
I'm trying to connect via SSL on port 465.

SMTP -> ERROR: EHLO not accepted from server: 

Notice: fputs() [function.fputs]: send of 18 bytes failed with errno=32 Roura přerušena (SIGPIPE) in /home/www/ on line 494
SMTP -> ERROR: HELO not accepted from server: 

Notice: fputs() [function.fputs]: send of 12 bytes failed with errno=32 Roura přerušena (SIGPIPE) in /home/www/ on line 212
SMTP -> ERROR: AUTH not accepted from server: 
SMTP Error: Could not authenticate.

My code:


            $mail = new PHPMailer(true);
            $mail->SMTPAuth = true;
            $mail->Host = SMTP_SERVER;
            $mail->Port = SMTP_PORT;
            $mail->Username = SMTP_USERNAME;
            $mail->Password = SMTP_PASSWORD;
            $mail->SMTPDebug = 2;
            $mail->SetFrom(MAIL_ORDERS_ADDRESS, MAIL_ORDERS_NAME);
            $mail->Subject = ' - objednávka číslo '.$_SESSION['orderId'];
            $mail->AddAddress($_SESSION['user']['email'], $_SESSION['user']['name'].' '.$_SESSION['user']['surname']);

            if(!$mail->Send()) throw new Exception($mail->ErrorInfo);
        catch(Exception $e){
            echo $e->getMessage();

Constants definition:

define('SMTP_SERVER', '');
define('SMTP_PORT', 465);
define('SMTP_USERNAME', 'myEmail@myDomain.tld');
define('SMTP_PASSWORD', '***CENSORED***');

define('MAIL_ORDERS_ADDRESS', 'myEmail@myDomain.tld');
define('MAIL_ORDERS_NAME', 'My Name');

Any ideas?

Source: (StackOverflow)

"SMTP Error: Could not authenticate" in PHPMailer

I'm Using PHPMailer in a Simple Script For Send Email's Through Gmail, And I'm Getting an "Unknown Error" (At least For me!):

SMTP Error: Could not authenticate. Error: SMTP Error: Could not authenticate.

SMTP server error: 5.7.1 Username and Password not accepted. Learn more at 535 5.7.1 p38sm2467302ybk.16

I've Read About Configure OpenSSL For SSL/TLS Connections, and i did it. Apache And PHP Are properly-Configured (With OpenSSL extension Running in PHP and mod_ssl running in Apache 2.2.16).

This is The PHP Script:

  require_once ("PHPMailer\class.phpmailer.php");
  $Correo = new PHPMailer();
  $Correo->SMTPAuth = true;
  $Correo->SMTPSecure = "tls";
  $Correo->Host = "";
  $Correo->Port = 587;
  $Correo->UserName = "";
  $Correo->Password = "gmailpassword";
  $Correo->SetFrom('','De Yo');
  $Correo->FromName = "From";
  $Correo->Subject = "Prueba con PHPMailer";
  $Correo->Body = "<H3>Bienvenido! Esto Funciona!</H3>";
  $Correo->IsHTML (true);
  if (!$Correo->Send())
    echo "Error: $Correo->ErrorInfo";
    echo "Message Sent!";

The Username And Password Are Ok, And I Tried in Thunderbird, Without Any Problem. I've also Used SSL Authentication And Port 465, getting the same Error.

Can Anyone Help Me?

Thanks in Advance!

PS: Sorry For My English. I'm Not a "Native-Speaker"

Source: (StackOverflow)

Could not instantiate mail function. Why this error occuring

When Im trying to send mail through PHPMailer, im getting this error message. My code is below:

require("phpmailer/class.phpmailer.php"); // First we require the PHPMailer libary in our script
$mail = new PHPMailer(); // Next we create a new object of the PHPMailer called $mail
$mail->From = "";
$mail->FromName = "Rajasekar";
$mail->AddAddress(""); // This is the adress to witch the email has to be send.
$mail->Subject = "First PHP Email message"; // This is the subject  of the email message.
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHP."; // This is the actual email message
if(!$mail->Send()) // Now we send the email and check if it was send or not.
   echo 'Message was not sent.';
   echo 'Mailer error: ' . $mail->ErrorInfo;
   echo 'Message has been sent.';

Source: (StackOverflow)

Sending Plain text emails using PHPMailer

I have a problem sending plain text emails using PHPMailer.

I have text that I read from a text file and mail it to mail recipient via PHPMailer

When the recipient gets the actual email, the formatting of the mail is not like in the text file, everything is in one line, no new lines and tabs are included in the email that I send. Text wrapping is totally off.


        $mail->ContentType = 'text/plain'; 
        $address = "";
        $mail->AddAddress($address, "John Doe");



        $mail->Subject = $action." REGISTRATION ".$formName.$tld;
        $mail->From = EMAIL_TEST;  


            return true;

Source: (StackOverflow)