2014-09-18 4 views
3

Я хочу отправить электронное письмо с SMTP в мой проект, ранее я писал php mail() в своем проекте, но теперь мой клиент хочет, чтобы я использовал SMTP. Я ищу об этом, но у меня нет ничего подходящего для этого решения.Как отправить письмо с SMTP в php

В моем php mail() я отправляю имя, тему и комментарий, так как я могу это сделать в SMTP.

Вот мой код:

$payer_email = "Your Email"; 
$subject = "Your Subject"; 
$message = 'Dear '.$name.', 
      Thank you for your purchase from '.$site_url.'. The details of your purchase are below. 
      Transaction ID: '.$txn_id.' 
      Item Name: '.$item_name.' 
      Payment Amount: '.$payment_amount.' 
      Payment Amount: '.$payment_status.' 
      Paid to: '.$receiver_email.' 
      Thanks and Enjoy!'; 

$headers .= 'From: ' .$from. "\r\n" .'Reply-To: ' .$from . "\r\n"; 
$headers .= 'MIME-Version: 1.0' . "\r\n"; 
$headers .= "Content-Type: text/html; charset=iso-8859-1 "; 

//mail to buyer 
mail($payer_email , $subject, $message, $headers); 

Пожалуйста, дайте мне несколько предложений или простые и хорошие учебники.

ответ

4

Посмотрите на PHP Mailer:

https://github.com/PHPMailer/PHPMailer

Пример из этой страницы:

<?php 
require 'PHPMailerAutoload.php'; 

$mail = new PHPMailer; 

//$mail->SMTPDebug = 3;        // Enable verbose debug output 

$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 TLS encryption, `ssl` also accepted 
$mail->Port = 587;         // TCP port to connect to 

$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'; 
} 
+0

Пожалуйста, скажите мне, что я получаю папку «PHPMailer» и поместить в мой проект и написать этот код. – deemi

+1

Вы должны загрузить PHPMailer, поместить его в свой каталог проекта и включить его в свой проект, например 'require 'path/to/PHPMailer/PHPMailerAutoload.php;', а затем использовать его, как показано выше. – Jonathon

+0

извините за задержку ... это работает на «localhost» или только на онлайн-сервере ... потому что я тестирую его на localhost, но он не работает – deemi

2
$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->CharSet = 'UTF-8'; 

$mail->Host  = "mail.example.com"; // SMTP server example 
$mail->SMTPDebug = 0;      // enables SMTP debug information (for testing) 
$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->Port  = 25;     // set the SMTP port for the GMAIL server 
$mail->Username = "username"; // SMTP account username example 
$mail->Password = "password";  // SMTP account password example 
3

Пожалуйста, попробуйте это

Создать файл библиотеки для настройки SMTP ' library.php ':

<?php 
    error_reporting(0); 
    define("SMTP_HOST", "SMTP_HOST_NAME"); //Hostname of the mail server 
    define("SMTP_PORT", "SMTP_PORT"); //Port of the SMTP like to be 25, 80, 465 or 587 
    define("SMTP_UNAME", "VALID_EMAIL_ACCOUNT"); //Username for SMTP authentication any valid email created in your domain 
    define("SMTP_PWORD", "VALID_EMAIL_ACCOUNTS_PASSWORD"); //Password for SMTP authentication 
    ?> 

Make the form post and do the below actions: 

<?php 
include 'library.php'; 
include "classes/class.phpmailer.php"; // include the class file name 
if(isset($_POST["send"])){ 
    $email = $_POST["email"]; 
    $mail = new PHPMailer; // call the class 
    $mail->IsSMTP(); 
    $mail->Host = SMTP_HOST; //Hostname of the mail server 
    $mail->Port = SMTP_PORT; //Port of the SMTP like to be 25, 80, 465 or 587 
    $mail->SMTPAuth = true; //Whether to use SMTP authentication 
    $mail->Username = SMTP_UNAME; //Username for SMTP authentication any valid email created in your domain 
    $mail->Password = SMTP_PWORD; //Password for SMTP authentication 
    $mail->AddReplyTo("[email protected]", "Reply name"); //reply-to address 
    $mail->SetFrom("[email protected]", "Asif18 SMTP Mailer"); //From address of the mail 
    // put your while loop here like below, 
    $mail->Subject = "Your SMTP Mail"; //Subject od your mail 
    $mail->AddAddress($email, "Asif18"); //To address who will receive this email 
    $mail->MsgHTML("<b>Hi, your first SMTP mail has been received. Great Job!.. <br/><br/>by <a href='http://asif18.com'>Asif18</a></b>"); //Put your body of the message you can place html code here 
    $mail->AddAttachment("images/asif18-logo.png"); //Attach a file here if any or comment this line, 
    $send = $mail->Send(); //Send the mails 
    if($send){ 
     echo '<center><h3 style="color:#009933;">Mail sent successfully</h3></center>'; 
    } 
    else{ 
     echo '<center><h3 style="color:#FF3300;">Mail error: </h3></center>'.$mail->ErrorInfo; 
    } 
} 
?> 

Правильно отредактируйте свою электронную почту и пароль.

Вы можете увидеть демо и исходный код на Click here

Смежные вопросы