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

yaski

Шмара
Регистрация
21 Фев 2010
Сообщения
1
Реакции
1
Как отправить почту через 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', 'Заголовок письма', 'Это текст самого письма бла бла бла бла');
 
Последнее редактирование:
Назад
Сверху