Skip to content

Instantly share code, notes, and snippets.

@ogidaniel1
Forked from nagiyevelchin/PHPMailYandex.php
Created February 26, 2021 14:25
Show Gist options
  • Save ogidaniel1/9022c627a8125d6f08065fae9ee739dd to your computer and use it in GitHub Desktop.
Save ogidaniel1/9022c627a8125d6f08065fae9ee739dd to your computer and use it in GitHub Desktop.
PHPMail Yandex send through smtp and save sent mail in imap folder
<?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