복붙노트

SMTP 서버에서 PHP로 이메일 보내기

PHP

SMTP 서버에서 PHP로 이메일 보내기

$from = "someonelse@example.com";
$headers = "From:" . $from;
echo mail ("borutflis1@gmail.com" ,"testmailfunction" , "Oj",$headers);

PHP로 이메일을 보내는 데 문제가 있습니다. 오류 : SMTP 서버 응답 : 530 SMTP 인증이 필요합니다.

SMTP를 사용하지 않고 이메일을 보내면 확인할 수 있다는 인상을 받았습니다. 나는이 메일이 적절하게 걸러질 것을 알고 있지만, 지금은 중요하지 않습니다.

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = someonelse@example.com

이것은 php.ini 파일의 설정입니다. SMTP는 어떻게 설정해야합니까? 확인이 필요없는 SMTP 서버가 있습니까? 아니면 직접 서버를 설정해야합니까?

해결법

  1. ==============================

    1.SMTP Auth가 필요한 서버를 통해 전자 메일을 보내는 경우 실제로이를 지정하고 호스트, 사용자 이름 및 암호를 설정해야합니다 (기본 포트가 아닌 경우 포트 번호 - 25).

    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를 참조하십시오.

  2. ==============================

    2.Unix 사용자의 경우 mail ()은 Sendmail 명령을 사용하여 실제로 전자 메일을 보냅니다. 응용 프로그램을 수정하는 대신 환경을 변경할 수 있습니다. msmtp는 Sendmail 호환 CLI 구문을 사용하는 SMTP 클라이언트로서 Sendmail 대신 사용할 수 있습니다. php.ini에 약간의 변경 만 있으면됩니다.

    Unix 사용자의 경우 mail ()은 Sendmail 명령을 사용하여 실제로 전자 메일을 보냅니다. 응용 프로그램을 수정하는 대신 환경을 변경할 수 있습니다. msmtp는 Sendmail 호환 CLI 구문을 사용하는 SMTP 클라이언트로서 Sendmail 대신 사용할 수 있습니다. php.ini에 약간의 변경 만 있으면됩니다.

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

    그럼 저조한 메일 () 기능도 SMTP의 장점과 함께 작동 할 수 있습니다. 응용 프로그램을 수정하지 않고 sendgrid 또는 mandrill과 같은 메일 서비스에 기존 응용 프로그램을 연결하려는 경우 매우 유용합니다.

  3. ==============================

    3.

    <?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/>";
    ?>

    또는

    읽어

  4. ==============================

    4.여기 PHP PEAR로 할 수있는 방법이있다.

    여기 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는 Gmail 계정에서 설정을 사용하여 SMTP를 사용하도록 설정해야합니다.

  5. ==============================

    5.문제는 PHP mail () 함수가 매우 제한된 기능을 가지고 있다는 것입니다. PHP에서 메일을 보내는 방법에는 여러 가지가 있습니다.

    문제는 PHP mail () 함수가 매우 제한된 기능을 가지고 있다는 것입니다. PHP에서 메일을 보내는 방법에는 여러 가지가 있습니다.

    어떤 선택을하든 관계없이 일부 추상화 계층을 사용하는 것이 좋습니다. Windows를 실행하는 개발 컴퓨터에서 PHP 라이브러리를 사용할 수 있으며 Linux가있는 프로덕션 시스템에서 mail () 기능을 사용할 수 있습니다. 추상화 레이어를 사용하면 응용 프로그램이 실행되는 시스템에 따라 메일 드라이버를 교환 할 수 있습니다. abstract send () 메서드로 추상 MyMailer 클래스 또는 인터페이스를 만듭니다. MyPhpMailer와 MySwiftMailer라는 두 클래스를 상속합니다. 적절한 방법으로 send () 메소드를 구현하십시오.

  6. ==============================

    6.인증없이 작동하는 일부 SMTP 서버가 있지만 서버에 인증이 필요한 경우이를 피할 방법이 없습니다.

    인증없이 작동하는 일부 SMTP 서버가 있지만 서버에 인증이 필요한 경우이를 피할 방법이 없습니다.

    PHP의 내장 메일 기능은 매우 제한되어 있습니다. SMTP 서버는 Windows에서만 가능합니다. * nix에서 mail ()은 OS의 바이너리를 사용합니다.

    인터넷상의 임의의 SMTP 서버로 전자 메일을 보내려면 SwiftMailer와 같은 라이브러리 사용을 고려하십시오. 그러면 예를 들어 Google Mail의 보내는 서버를 사용할 수 있습니다.

  7. from https://stackoverflow.com/questions/14456673/sending-email-with-php-from-an-smtp-server by cc-by-sa and MIT license