PHP로 메일에 첨부 파일 보내기
PHP에서 이메일에 첨부 파일을 보내는 다양한 방법을 소개합니다.
PHPMailer
를 사용하여 이메일에 첨부 파일 보내기
PHPMailer
클래스를 사용하여 이메일을 보내 첨부 파일을 보낼 수 있습니다. PHPMailer
클래스 개체를 만들고 해당 메서드와 속성을 사용하여 원하는 수신자에게 이메일을 보낼 수 있습니다. 우리는 이메일을 보내기 위해 Gmail을 사용할 것입니다. 그래서 우리는 SMTP
프로토콜을 사용할 것입니다. 라이브러리에는 첨부 파일을 추가할 수 있는 addAttachment()
메서드가 있습니다. 먼저 GitHub에서 라이브러리를 다운로드해야 합니다.
예를 들어 src
폴더를 만들고 PHPMailer.php
, SMTP.php
및 Exception.php
파일 세 개를 이 폴더에 복사합니다. 그런 다음 index.php
파일을 만들고 require
문을 사용하여 이 세 파일을 포함합니다. 그런 다음 이 파일의 해당 클래스를 사용하십시오. 다음으로 PHPMailer()
클래스의 $mail
개체를 만듭니다. Username
및 Password
속성으로 보낸 사람의 이메일과 암호를 설정합니다. 제목
및 본문
속성을 사용하여 이메일의 제목과 본문을 설정합니다. addAttachment()
함수를 사용하여 첨부 파일을 추가합니다. 메소드의 매개변수로 첨부 파일의 상대 경로를 지정하십시오. AddAddress()
메소드에 수신자의 이메일을 작성하십시오. 마지막으로 Send()
메서드를 호출하여 이메일을 보냅니다. 다음으로 smtpClose()
를 호출하여 SMTP
연결을 닫습니다.
PHPMailer
에서 Gmail을 사용하여 이메일을 보내려면 보낸 사람의 이메일을 변경해야 합니다. PHPMailer
를 사용하려면 Gmail에서 덜 안전한 앱 액세스 옵션을 켜야 합니다. 그런 다음 다음 스크립트를 실행하면 수신자에게 이메일과 첨부 파일이 전송됩니다.
예제 코드:
<?php
require 'src/PHPMailer.php';
require 'src/SMTP.php';
require 'src/Exception.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = "true";
$mail->SMTPSecure ="tls";
$mail->Port = "587";
$mail->Username = "sendersemail@gmail.com";
$mail->Password = "password";
$mail->SetFrom('sendersemail@gmail.com');
$mail->Subject = 'Message Subject';
$mail->Body = "This is a body text";
$mail->addAttachment('attachments/project.pdf');
$mail->AddAddress( 'receiversmail@gmail.com' );
$mail->Send();
$mail->smtpClose();
?>
SwiftMailer
로 이메일에 첨부 파일 보내기
타사 라이브러리 SwiftMailer
를 사용하여 첨부 파일이 있는 이메일도 보낼 수 있습니다. 라이브러리는 이메일을 보내는 동안 첨부 파일을 추가하는 attach()
메서드를 제공합니다. 다음 명령을 사용하여 라이브러리를 설치할 수 있습니다.
composer require "swiftmailer/swiftmailer:^6.0"
SwiftMailer
와 함께 작동하려면 스크립트에 autoloader.php
파일을 포함해야 합니다. 파일은 다운로드한 파일의 vendor
폴더에 있습니다. Gmail로 이메일을 보내드립니다. Gmail을 사용하려면 SMTP
프로토콜을 사용해야 합니다. 따라서 호스트, 포트 번호 및 프로토콜을 설정하기 위해 Swift_SmtpTransport
클래스로 전송을 생성해야 합니다. 전송을 사용하여 보낸 사람의 이메일과 비밀번호를 설정할 수 있습니다. Swift_Mailer
클래스를 사용하여 전송을 설정하고 Swift_Mailer
클래스를 사용하여 메시지, 수신자 및 첨부 파일을 설정할 수 있습니다.
예를 들어, 작업 파일의 autoload.php
파일은 vendor/autoload.php
로 필요합니다. Swift_SmtpTransport
클래스의 $transport
개체를 만들고 호스트를 smtp.gmail.com
, 포트 번호를 587
, 보안 프로토콜을 tls
로 설정합니다. 그런 다음 setUsername
및 setPassword
방법을 사용하여 보낸 사람의 이메일과 암호를 설정합니다. 다음으로 Swift_Mailer
클래스의 $mail
개체를 만들고 $transport
개체를 설정합니다. 그런 다음 Swift_Message
클래스의 또 다른 개체 $content
를 만들고 주제를 매개변수로 작성합니다. setFrom()
및 setTo()
메서드를 사용하여 보낸 사람의 이메일과 받는 사람의 이메일을 지정합니다. setBody()
메소드에 이메일 본문을 작성하십시오. 그런 다음 attach()
메서드를 사용하여 Swift_Attachment
클래스의 fromPath()
메서드를 사용하여 첨부 파일 경로를 지정합니다. 마지막으로 send()
메소드로 이메일을 보내기 위해 생성한 $mail
객체를 사용합니다. $content
객체를 send()
메소드의 매개변수로 제공하십시오.
이것이 PHP의 SwiftMailer
라이브러리를 사용하여 첨부 파일이 있는 이메일을 보내는 방법입니다.
예제 코드:
require_once 'vendor/autoload.php';
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
->setUsername('sendersemail@gmail.com')
->setPassword('password')
$mail = new Swift_Mailer($transport);
$content = (new Swift_Message('Subject'))
->setFrom(['sendersemail@gmail.com' => 'Senders Name'])
->setTo('recieversemail@gmail.com')
->setBody('This is a text')
->attach(Swift_Attachment::fromPath('attachments/project.pdf'));
$result = $mail->send($content);
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn