Created
July 12, 2019 06:53
-
-
Save nagiyevelchin/9a58a6e9865620de69f11e2a023eb671 to your computer and use it in GitHub Desktop.
PHPMail Yandex send through smtp and save sent mail in imap folder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
print "<pre>"; | |
$mbox = imap_open("{imap.yandex.ru}/ONE", "***@yandex.ru", "****", OP_HALFOPEN) | |
or die("can't connect: " . imap_last_error()); | |
$list = imap_getmailboxes($mbox, "{imap.yandex.ru}", "*"); | |
if (is_array($list)) { | |
print_r($list); | |
} else { | |
echo "imap_getmailboxes failed: " . imap_last_error() . "\n"; | |
} | |
imap_close($mbox); | |
/** | |
* This example shows settings to use when sending via Google's Gmail servers. | |
* This uses traditional id & password authentication - look at the gmail_xoauth.phps | |
* example to see how to use XOAUTH2. | |
* The IMAP section shows how to save this message to the 'Sent Mail' folder using IMAP commands. | |
*/ | |
//Import PHPMailer classes into the global namespace | |
use PHPMailer\PHPMailer\PHPMailer; | |
require 'vendor/autoload.php'; | |
//Create a new PHPMailer instance | |
$mail = new PHPMailer; | |
//Tell PHPMailer to use SMTP | |
$mail->isSMTP(); | |
//Enable SMTP debugging | |
// 0 = off (for production use) | |
// 1 = client messages | |
// 2 = client and server messages | |
$mail->SMTPDebug = 2; | |
//Set the hostname of the mail server | |
$mail->Host = 'smtp.yandex.ru'; | |
// use | |
// $mail->Host = gethostbyname('smtp.gmail.com'); | |
// if your network does not support SMTP over IPv6 | |
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission | |
$mail->Port = 465; | |
//Set the encryption system to use - ssl (deprecated) or tls | |
$mail->SMTPSecure = 'ssl'; | |
//Whether to use SMTP authentication | |
$mail->SMTPAuth = true; | |
//Username to use for SMTP authentication - use full email address for gmail | |
$mail->Username = "***@yandex.ru"; | |
//Password to use for SMTP authentication | |
$mail->Password = "******"; | |
//Set who the message is to be sent from | |
$mail->setFrom('***@yandex.ru', 'First Last'); | |
//Set who the message is to be sent to | |
$mail->addAddress('*****@gmail.com', 'John Doe'); | |
//Set the subject line | |
$mail->Subject = 'PHPMailer Yandex SMTP test'; | |
//Read an HTML message body from an external file, convert referenced images to embedded, | |
//convert HTML into a basic plain-text alternative body | |
$mail->msgHTML('PHPMailer Yandex SMTP test'); | |
//Replace the plain text body with one created manually | |
$mail->AltBody = 'This is a plain-text message body'; | |
//send the message, check for errors | |
if (!$mail->send()) { | |
echo "Mailer Error: " . $mail->ErrorInfo; | |
} else { | |
echo "Message sent!"; | |
//Section 2: IMAP | |
//Uncomment these to save your message in the 'Sent Mail' folder. | |
if (save_mail($mail)) { | |
echo "Message saved!"; | |
} | |
} | |
//Section 2: IMAP | |
//IMAP commands requires the PHP IMAP Extension, found at: https://php.net/manual/en/imap.setup.php | |
//Function to call which uses the PHP imap_*() functions to save messages: https://php.net/manual/en/book.imap.php | |
//You can use imap_getmailboxes($imapStream, '/imap/ssl', '*' ) to get a list of available folders or labels, this can | |
//be useful if you are trying to get this working on a non-Gmail IMAP server. | |
function save_mail($mail) { | |
//You can change 'Sent Mail' to any other folder or tag | |
$path = "{imap.yandex.ru}ONE"; | |
//Tell your server to open an IMAP connection using the same username and password as you used for SMTP | |
$imapStream = imap_open($path, $mail->Username, $mail->Password); | |
$check = imap_check($imapStream); | |
echo "Msg Count before append : ". $check->Nmsgs . "\n"; | |
$result = imap_append($imapStream, $path, $mail->getSentMIMEMessage()); | |
$check = imap_check($imapStream); | |
echo "Msg Count after append : ". $check->Nmsgs . "\n"; | |
imap_close($imapStream); | |
return $result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment