Поэтому мне нужен некоторый PHP-код, который может
- получить токен доступа, который будет использоваться для отправки почты. Я не думаю, что мне понадобится какой-либо URL-адрес перенаправления — я не пытаюсь настроить страницу для пользователей моего сайта для авторизации чего-либо, я просто хочу отправлять электронную почту из своей учетной записи Gmail.
- Опознайте, если токен доступа устарел, и при необходимости обновите его.
- Используйте токен доступа, чтобы связаться с Gmail API и отправить сообщение электронной почты, используя мою учетную запись Gmail.
Вопрос 2. Какой PHP-код мне нужен для получения и/или обновления токена доступа OAuth2, который я буду использовать для связи с Gmail API? Я не могу использовать клиент google-api-php-client. Я видел это сообщение, но, похоже, в нем есть $client_id и $client_secret для учетных данных, а также $redirect_url, который, как мне кажется, мне не нужен?
И Вопрос 3: если у меня есть действительный токен доступа, какой код PHP (предположительно с использованием CURL) я могу использовать для отправки сообщения электронной почты, сгенерированного в PHP? Мой поиск в Google дал результаты довольно интересный код, но он предполагает, что у меня есть $client_id, $client_secret и $access_token:
Код: Выделить всё
// Manually construct the email headers and body to comply with MIME standards.
function create_mime_message($to, $from, $subject, $body) {
$mime_message = "To: $to\r\n";
$mime_message .= "From: $from\r\n";
$mime_message .= "Subject: $subject\r\n";
$mime_message .= "MIME-Version: 1.0\r\n";
$mime_message .= "Content-Type: text/plain; charset=utf-8\r\n";
$mime_message .= "Content-Transfer-Encoding: base64\r\n\r\n";
$mime_message .= base64_encode($body) . "\r\n"; // Body should also be encoded
return $mime_message;
}
// The entire raw MIME message string needs to be base64url-encoded for the Gmail API.
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
$raw_message = create_mime_message("recipient@example.com", "sender@gmail.com", "Test Subject", "This is the email body.");
$encoded_message = base64url_encode($raw_message);
// Use PHP's cURL extension to send a POST request to the https://www.googleapis.com endpoint, including the access token in the headers and the encoded message in the JSON payload
$access_token = "YOUR_VALID_ACCESS_TOKEN"; // Must be obtained via OAuth2
$post_data = json_encode(['raw' => $encoded_message]);
$ch = curl_init('https://www.googleapis.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Consider carefully in production
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $access_token",
'Accept: application/json',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code == 200) {
echo "Email sent successfully!";
} else {
echo "Failed to send email. Response: " . $response;
}
А пока я умоляю Digital Ocean позволить мне отправлять почту SMTP через порт 587.>
Подробнее здесь: https://stackoverflow.com/questions/798 ... hout-using
Мобильная версия