Добавление SMTP-сервера в PHP-код [дубликат]

Используйте функцию callback() внутри успеха foo(). Попробуйте таким образом. Это просто и легко понять. & nbsp;

var lat = "";
var lon = "";
function callback(data) {
    lat = data.lat;
    lon = data.lon;
}
function getLoc() {
    var url = "http://ip-api.com/json"
    $.getJSON(url, function(data) {
        callback(data);
    });
}

getLoc();
101
задан Peter Mortensen 12 April 2014 в 20:27
поделиться

6 ответов

Когда вы отправляете электронное письмо через сервер, для которого требуется SMTP Auth, вам действительно нужно указать его, а также указать хост, имя пользователя и пароль (и, возможно, порт, если он не является стандартным - 25).

Например, я обычно использую PHPMailer с похожими настройками:

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';

$mail->Host       = "mail.example.com"; // SMTP server example
$mail->SMTPDebug  = 0;                     // enables SMTP debug information (for testing)
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Port       = 25;                    // set the SMTP port for the GMAIL server
$mail->Username   = "username"; // SMTP account username example
$mail->Password   = "password";        // SMTP account password example

Здесь вы можете найти больше о PHPMailer: https://github.com/ PHPMailer / PHPMailer

139
ответ дан Abbe 5 September 2018 в 11:11
поделиться

Вот способ сделать это с помощью PHP PEAR

// Pear Mail Library
require_once "Mail.php";

$from = '<your@mail.com>'; //change this to your email address
$to = '<someone@mail.com>'; // change to address
$subject = 'Insert subject here'; // subject of mail
$body = "Hello world! this is the content of the email"; //content of mail

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => 'your@gmail.com', //your gmail account
        'password' => 'snip' // your password
    ));

// Send the mail
$mail = $smtp->send($to, $headers, $body);

Если вы используете gmail smtp, не забудьте включить SMTP в свою учетную запись gmail, в настройках

14
ответ дан Bolli 5 September 2018 в 11:11
поделиться
<?php
    ini_set("SMTP", "aspmx.l.google.com");
    ini_set("sendmail_from", "YOURMAIL@gmail.com");

    $message = "The mail message was sent with the following mail setting:\r\nSMTP = aspmx.l.google.com\r\nsmtp_port = 25\r\nsendmail_from = YourMail@address.com";

    $headers = "From: YOURMAIL@gmail.com";


    mail("Sending@provider.com", "Testing", $message, $headers);
    echo "Check your email now....<BR/>";
?>

ИЛИ

READ ON

36
ответ дан Dipesh Parmar 5 September 2018 в 11:11
поделиться

Проблема в том, что функция PHP mail() имеет очень ограниченную функциональность. Существует несколько способов отправки почты с PHP.

  1. mail() использует SMTP-сервер в вашей системе. В Windows можно использовать как минимум два сервера: hMailServer и xmail . Я провел несколько часов, настраивая и поднимая их. На мой взгляд, первый из них проще. В настоящий момент hMailServer работает с Windows 7 x64.
  2. mail() использует SMTP-сервер на удаленной или виртуальной машине с Linux. Конечно, реальная почтовая служба, такая как Gmail, не позволяет прямое соединение без каких-либо учетных данных или ключей. Вы можете настроить виртуальную машину или использовать ее в локальной сети. Большинство дистрибутивов Linux имеют почтовый сервер из коробки. Настройте его и получайте удовольствие. Я использую exim4 по умолчанию на Debian 7, который прослушивает его интерфейс LAN.
  3. Библиотеки рассылки используют прямые подключения. Либов легче настроить. Я использовал SwiftMailer, и он отлично отправляет почту из учетной записи Gmail. Я думаю, что PHPMailer тоже очень хорош.

Независимо от того, какой ваш выбор, я рекомендую вам использовать некоторый уровень абстракции. Вы можете использовать библиотеку PHP на своей машине разработки под управлением Windows и просто функцию mail() на производственной машине с Linux. Уровень абстракции позволяет вам обменивать почтовые драйверы в зависимости от системы, в которой работает ваше приложение. Создать абстрактный MyMailer класс или интерфейс с абстрактным send() методом. Наследуем два класса MyPhpMailer и MySwiftMailer. Внедрите метод send() соответствующим образом.

12
ответ дан George Sovetov 5 September 2018 в 11:11
поделиться

Есть несколько SMTP-серверов, которые работают без аутентификации, но если сервер требует аутентификации, нет способа обойти это.

Встроенные функции почты PHP очень ограничены - указание SMTP-сервера возможно только в WIndows. On * nix mail() будет использовать двоичные файлы ОС.

Если вы хотите отправить E-Mail на произвольный SMTP-сервер в сети, подумайте об использовании библиотеки, например SwiftMailer , Это позволит вам использовать, например, исходящие серверы Google Mail.

10
ответ дан Pekka 웃 5 September 2018 в 11:11
поделиться

Для пользователей Unix почта () на самом деле использует команду Sendmail для отправки электронной почты. Вместо изменения приложения вы можете изменить среду. msmtp - это SMTP-клиент с синтаксисом CLI, совместимым с Sendmail, что означает, что он может использоваться вместо Sendmail. Это требует только небольшого изменения вашего php.ini.

sendmail_path = "/usr/bin/msmtp -C /path/to/your/config -t"

Тогда даже функция lowly mail () может работать с поддержкой SMTP. Это очень полезно, если вы пытаетесь подключить существующее приложение к почтовым службам, таким как sendgrid или mandrill, без изменения приложения.

36
ответ дан txyoji 5 September 2018 в 11:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: