SMTP 서버에서 PHP로 이메일 보내기
$from = "someonelse@example.com";
$headers = "From:" . $from;
echo mail ("borutflis1@gmail.com" ,"testmailfunction" , "Oj",$headers);
PHP로 이메일을 사용하는 데 문제가 있습니다. 오류가 발생했습니다 : SMTP server response: 530 SMTP authentication is required
.
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 서버가 있습니까? 아니면 서버를 직접 설정해야합니까?
SMTP 인증이 필요한 서버를 통해 이메일을 보낼 수 있습니다.이를 지정하고 호스트, 사용자 이름 및 비밀번호 (및 기본 포트가 아닌 경우 포트 -25)를 설정해야합니다.
예를 들어, 나는 보통 다음과 추가 설정으로 PHPMailer를 사용합니다.
$mail = new PHPMailer();
// Settings
$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
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
PHPMailer에 대한 자세한 내용은 https://github.com/PHPMailer/PHPMailer를 참조 하십시오.
<?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/>";
?>
또는 자세한 내용 은를 참조하십시오 .
Unix 사용자의 경우 메일 ()은 실제로 Sendmail 명령을 사용하여 전자 메일을 보냅니다. 응용 프로그램을 수정하는 대신 환경을 사용합니다. msmtp 는 Sendmail 호환 CLI 구문을 사용하는 SMTP 클라이언트로 Sendmail 대신 사용할 수 있습니다. php.ini를 약간만 변경하면됩니다.
sendmail_path = "/usr/bin/msmtp -C /path/to/your/config -t"
그런 다음 낮은 메일 () 함수조차도 SMTP 양호와 함께 작동 할 수 있습니다. 응용 프로그램을 수정하지 않고 기존 응용 프로그램을 sendgrid 또는 mandrill과 같은 메일 서비스에 연결하려는 경우 매우 유용합니다.
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);
//check mail sent or not
if (PEAR::isError($mail)) {
echo '<p>'.$mail->getMessage().'</p>';
} else {
echo '<p>Message successfully sent!</p>';
}
Gmail SMTP를 사용하는 경우 설정 아래의 Gmail 계정에서 SMTP를 활성화해야합니다.
문제는 PHP mail()
함수의 기능이 매우 제한적이라는 것입니다. PHP에서 메일을 보내는 방법에는 여러 가지가 있습니다.
mail()
시스템에서 SMTP 서버를 사용합니다. Windows에서 사용할 수있는 서버는 hMailServer 및 xmail 두 개 이상 입니다. 나는 그들을 구성하고 시작하는 데 몇 시간을 보냈다. 첫 번째는 내 생각에 더 간단합니다. 현재 hMailServer는 Windows 7 x64에서 작동합니다.mail()
Linux가 설치된 원격 또는 가상 머신에서 SMTP 서버를 사용합니다. 물론 Gmail과 같은 실제 메일 서비스는 자격 증명이나 키 없이는 직접 연결을 허용하지 않습니다. 가상 머신을 설정하거나 LAN에있는 가상 머신을 사용할 수 있습니다. 대부분의 Linux 배포판에는 기본적으로 메일 서버가 있습니다. 그것을 구성하고 재미있게 보내십시오. LAN 인터페이스를 수신하는 Debian 7에서 기본 exim4를 사용합니다.- 메일 링 라이브러리는 직접 연결을 사용합니다. 라이브러리는 설정하기가 더 쉽습니다. 저는 SwiftMailer를 사용했고 Gmail 계정에서 완벽하게 메일을 보냅니다. PHPMailer도 꽤 좋다고 생각합니다.
어떤 선택을하든 추상화 계층을 사용하는 것이 좋습니다. Windows를 실행하는 개발 컴퓨터에서 PHP 라이브러리를 사용 mail()
하고 Linux가있는 프로덕션 컴퓨터에서 간단히 작동 할 수 있습니다 . 추상화 계층을 사용하면 애플리케이션이 실행되는 시스템에 따라 메일 드라이버를 교환 할 수 있습니다. MyMailer
추상 send()
메서드를 사용하여 추상 클래스 또는 인터페이스를 만듭니다 . 두 개의 클래스 MyPhpMailer
및 MySwiftMailer
. send()
적절한 방법으로 방법을 구현하십시오 .
인증없이 작동하는 일부 SMTP 서버가 있지만 서버에 인증이 필요한 경우이를 피할 방법이 없습니다.
PHP의 내장 메일 기능은 매우 제한적입니다. SMTP 서버 지정은 WIndows에서만 가능합니다. * nix에서는 mail()
OS의 바이너리를 사용합니다.
인터넷상의 임의의 SMTP 서버로 이메일을 보내려면 SwiftMailer 와 같은 라이브러리를 사용하는 것이 좋습니다 . 예를 들어 Google Mail의 발신 서버를 사용할 수 있습니다.
Linux에서 Wordpress 사이트를 호스팅하고 서버에 액세스 할 수있는 경우 표준 php mail () 함수에서 smtp를 통해 보낼 수있는 msmtp를 설치하여 두통을 줄일 수 있습니다. msmtp는 좀 더 많은 구성이 필요한 postfix에 대한 더 간단한 대안입니다.
단계는 다음과 같습니다.
msmtp 설치
sudo apt-get install msmtp-mta ca-certificates
새 구성 파일을 만듭니다.
sudo nano /etc/msmtprc
... 다음 구성 정보 포함 :
# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <username@example.net>
password <password>
from <address-to-receive-bounces@example.net>
syslog LOG_MAIL
"<"및 ">"내의 모든 항목으로 표시되는 구성 데이터를 바꿔야합니다 (포함, 제거). 호스트 / 사용자 이름 / 비밀번호의 경우 메일 공급자를 통해 메일을 보내기위한 일반 자격 증명을 사용합니다.
PHP에 사용하도록 지시
sudo nano /etc/php5/apache2/php.ini
다음 한 줄을 추가하십시오.
sendmail_path = /usr/bin/msmtp -t
완전한 문서는 여기에서 찾을 수 있습니다.
참고 URL : https://stackoverflow.com/questions/14456673/sending-email-with-php-from-an-smtp-server
'IT' 카테고리의 다른 글
jQuery는 선택이 선택되어 있는지 확인합니다. (0) | 2020.07.17 |
---|---|
Java / Android- 전체 스택 추적을 인쇄하는 방법은 무엇입니까? (0) | 2020.07.17 |
현재 메소드 호출의 견적 ID (0) | 2020.07.17 |
GHCi의 여러 줄 명령 (0) | 2020.07.17 |
100 % 너비 테이블 오버플로 div 컨테이너 (0) | 2020.07.17 |