Как отправить почту через gmail используя curl

yaski

web3
Регистрация
21 Фев 2010
Сообщения
658
Реакции
500
Как отправить почту через smtp сервер gmail используя curl, не используя сторонних библиотек типа PHPMailer и т.п.
 
curl --mail-from "mail@example.com" --mail-auth "mail@example.com" --ssl-reqd smtp://mx.example.com:587 -u mail@example.com:XXXX -v --mail-rcpt "user@example.com" --upload-file "/home/user/mail.txt"
Содержимое mail.txt:

From: "Mail" <mail@example.com>
To: "User" <user@example.com>
Subject: This is a test

Hello...

Отправка письма с mail@example.com на user@example.com через smtp mx.example.com, слушающего порт 587 с шифрованием STARTTLS.
Как-то так.

Инфа взята отсюда:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

:glob:
 
curl --mail-from "mail@example.com" --mail-auth "mail@example.com" --ssl-reqd smtp://mx.example.com:587 -u mail@example.com:XXXX -v --mail-rcpt "user@example.com" --upload-file "/home/user/mail.txt"
Содержимое mail.txt:

From: "Mail" <mail@example.com>
To: "User" <user@example.com>
Subject: This is a test

Hello...

Отправка письма с mail@example.com на user@example.com через smtp mx.example.com, слушающего порт 587 с шифрованием STARTTLS.
Как-то так.

Инфа взята отсюда:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

:glob:
Это я видел, на php это как перевести?
 
Эм... В смысле как?
Для просмотра ссылки Войди или Зарегистрируйся - функции для вызова консольных команд. :glob:
в смысле я ленивая жопа, Для просмотра ссылки Войди или Зарегистрируйсяконсольная команда, хочу готовую функцию на php, аналог функции mail(), только чтоб через гугловский smtp работала используя curl, что-то типа
PHP:
<?php
$url = 'smtp гугла';
    $user = 'blablabla@gmail.com';
    $pass = '123456';

    $params = array(
        'User'      => $user,
        'passwor'   => $pass,
        'to'        => 'example1@example.com',
        'subject'   => 'test',
        'html'      => 'body',
        'text'      => 'text',
        'from'      => 'example2@example.com',
      );


    $session = curl_init($url);
    curl_setopt ($session, CURLOPT_POST, true);
    curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
    curl_setopt($session, CURLOPT_HEADER, 1);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($session);
    $info = curl_getinfo($session);
    curl_close($session);
    echo $response;
    print_r($info);
 
в смысле я ленивая жопа, Для просмотра ссылки Войди или Зарегистрируйсяконсольная команда, хочу готовую функцию на php, аналог функции mail(), только чтоб через гугловский smtp работала используя curl, что-то типа
PHP:
<?php
$url = 'smtp гугла';
    $user = 'blablabla@gmail.com';
    $pass = '123456';

    $params = array(
        'User'      => $user,
        'passwor'   => $pass,
        'to'        => 'example1@example.com',
        'subject'   => 'test',
        'html'      => 'body',
        'text'      => 'text',
        'from'      => 'example2@example.com',
      );


    $session = curl_init($url);
    curl_setopt ($session, CURLOPT_POST, true);
    curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
    curl_setopt($session, CURLOPT_HEADER, 1);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($session);
    $info = curl_getinfo($session);
    curl_close($session);
    echo $response;
    print_r($info);
Ну так сделай через гугловский, в чем проблем-с?
Или ждешь, когда кто-то напишет от и до? Поищи на гитхабе тогда :glob:
 
Ну так сделай через гугловский, в чем проблем-с?
Или ждешь, когда кто-то напишет от и до? Поищи на гитхабе тогда :glob:
Если все так просто было.
Десятка два уже испробовал, ни один код не работает.
Те что в гуглопоиске находятся, работают, точнее не работают, через сокеты.
 
Если все так просто было.
Десятка два уже испробовал, ни один код не работает.
Те что в гуглопоиске находятся, работают, точнее не работают, через сокеты.

PHP:
class Gmail {

    private $mail;
    private $email;
    private $pass;
        
    public function __construct($email, $pass)
    {
        $this->email = $email;
        $this->pass = $pass;
    }

    private function mailGen()
    {
        $from = yield;
        $to = yield;
        $subject = yield;
        $body = yield;
        yield "FROM: <" . $from . ">\r\n";
        yield "To: <" . $to . ">\r\n";
        yield "Subject: " . $subject . "\r\n";
        yield "\r\n";
        yield $body;
        yield '';
    }

    public function getLine()
    {
        $resp = $this->mail->current();
        $this->mail->next();
        return $resp;
    }

    public function send($to, $subject, $body)
    {
        $this->mail = $this->mailGen();
        $this->mail->send($this->email);
        $this->mail->send($to);
        $this->mail->send($subject);
        $this->mail->send($body);

        $ch = curl_init('smtps://smtp.gmail.com:465');
        curl_setopt($ch, CURLOPT_MAIL_FROM, "<" . $this->email . ">");
        curl_setopt($ch, CURLOPT_MAIL_RCPT, ["<" . $to . ">"]);
        curl_setopt($ch, CURLOPT_USERNAME, $this->email);
        curl_setopt($ch, CURLOPT_PASSWORD, $this->pass);
        curl_setopt($ch, CURLOPT_USE_SSL, CURLUSESSL_ALL);
        curl_setopt($ch, CURLOPT_PUT, 1);
        curl_setopt($ch, CURLOPT_READFUNCTION, [$this, 'getLine']);
        return curl_exec($ch);
    }
}

$gmail = new Gmail('your-account@gmail.com', 'your-password');
$gmail->send('someone@example.com', 'Заголовок письма', 'Это текст самого письма бла бла бла бла');
 
Последнее редактирование:
Назад
Сверху