이메일을 보내는 방법 Code이그나이터

⚡ 스마트 요약

CodeIgniter를 이용한 이메일 전송은 프레임워크에 내장된 이메일 라이브러리를 사용하여 SMTP 또는 로컬 메일 서버를 통해 메시지를 전달합니다. 이 예제는 이메일 설정 파일, 문의 양식 뷰, 그리고 양식 입력을 읽고 메시지를 전송하는 컨트롤러를 생성합니다.

  • 📧 내장 라이브러리: 이메일 라이브러리는 최소한의 코드로 메일을 전송하며 SMTP, Sendmail 및 PHP 메일 전송 방식을 지원합니다.
  • ⚙️ 중앙 설정: 사용자 지정 email.php 설정 파일에는 프로토콜, 호스트, 포트, 사용자 이름 및 비밀번호가 저장되므로 설정이 한 곳에 유지됩니다.
  • 🔓 SMTP 자격 증명: smtp_host, smtp_user, smtp_pass 값은 유효해야 합니다. 더미 매개변수는 실제 이메일을 전송하지 않습니다.
  • 📝 폼에서 컨트롤러로: 연락처 보기에는 수신자, 제목 및 메시지가 수집되며, 컨트롤러는 입력 라이브러리를 사용하여 이를 읽습니다.
  • 📤 전송 흐름: 컨트롤러는 보내는 사람, 받는 사람, 제목 및 메시지를 설정한 다음 send()를 호출하고 실패 시 디버거 보고서를 출력합니다.
  • 📎 HTML 및 파일: 메일 유형을 html로 변경하고 attach() 함수를 호출하면 파일 첨부와 함께 형식화된 메시지를 보낼 수 있습니다.
  • 🤖 AI 지원: AI 도구는 이메일 컨트롤러를 생성하고, 양식 입력을 검증하며, 디버거 출력에서 ​​SMTP 연결 오류를 진단할 수 있습니다.

CodeIgniter에서 이메일 전송

웹 애플리케이션에서 이메일은 매우 중요합니다. 사용자가 가입할 때 이메일 주소를 확인하고 구독을 확정할 수 있도록 이메일을 보낼 수 있습니다. 또한 잊어버린 비밀번호를 재설정하거나 고객에게 청구서와 영수증을 발송하는 데에도 이메일을 사용합니다. CodeIgniter를 사용하면 다양한 옵션을 활용하여 애플리케이션에서 이메일을 매우 쉽게 보낼 수 있습니다.

CodeIgniter에는 이메일 전송 시 사용할 수 있는 내장 이메일 라이브러리가 있습니다.

CodeIgniter 이메일 구성

이메일 설정을 관리할 수 있는 중앙 집중식 공간이 필요합니다. CodeIgniter에는 이메일 설정 파일이 포함되어 있지 않으므로 직접 만들어야 합니다.

application/config 디렉토리에 email.php 파일을 만듭니다.

다음 코드를 email.php에 추가하세요.

<?php defined('BASEPATH') OR exit('No direct script access allowed');
 
$config = array(
'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp'
'smtp_host' => 'smtp.example.com',
'smtp_port' => 465,
'smtp_user' => 'no-reply@example.com',
'smtp_pass' => '12345!',
'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example
'mailtype' => 'text', //plaintext 'text' mails or 'html'
'smtp_timeout' => '4', //in seconds
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);

이리,

  • 'protocol' => 'smtp'는 이메일을 보낼 때 사용할 프로토콜을 지정합니다. 예를 들면 다음과 같습니다. Gmail SMTP 설정 또는 호스트의 SMTP 설정
  • 'smtp_host' => 'smtp.example.com'은 SMTP 호스트를 지정합니다. 예를 들어, SMTP 호스트를 사용하려면 다음과 같이 설정합니다. Gmail 그러면 SMTP.gmail.com과 같은 주소가 생길 것입니다.
  • 'smtp_port' => 465, 지정된 SMTP 호스트에서 SMTP 메일 발송을 위해 구성된 열린 포트입니다.
  • 'smtp_user' => 'no-reply@example.com', 이메일을 보낼 때 발신자로 사용되는 이메일 주소입니다. 이는 서버에 있는 유효한 이메일 주소여야 합니다.
  • 'smtp_pass' => '12345!', 지정된 SMTP 사용자 이메일의 비밀번호
  • 'smtp_crypto' => 'ssl'은 사용할 암호화 방식(예: ssl, tls 등)을 지정합니다.
  • 'mailtype' => 'text'는 사용할 메일 유형을 설정합니다. 필요에 따라 일반 텍스트 또는 HTML을 사용할 수 있습니다.
  • 'smtp_timeout' => '4'는 시간 초과 예외가 발생하기 전에 호스트에 연결을 시도할 때 경과해야 하는 시간을 초 단위로 지정합니다.
  • 'charset' => 'iso-8859-1'은 이메일을 보낼 때 사용할 문자 집합을 정의합니다.
  • 'wordwrap'이 TRUE로 설정되면 단어 줄 바꿈 기능이 활성화되고, FALSE로 설정되면 비활성화됩니다.

주의 사항: 이메일을 보내려면 유효한 구성 매개변수를 제공해야 합니다. 더미 매개변수는 이메일을 보낼 수 없습니다.

Code이그나이터 이메일 보기

이 섹션에서는 수신자에게 이메일을 보내는 뷰를 만듭니다.

application/views에 새로운 디렉토리 이메일을 생성하세요

application/views/mail 폴더에 contact.php라는 새 파일을 생성하세요.

application/views/email/contact.php에 다음 코드를 추가합니다.

<!DOCTYPE html>
<html>
<head>
<title>CodeIgniter Send Email</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<h3>Use the form below to send email</h3>
<form method="post" action="<?=base_url(0)?>" enctype="multipart/form-data">
<input type="email" id="to" name="to" placeholder="Receiver Email">
<br><br>
<input type="text" id="subject" name="subject" placeholder="Subject">
<br><br>
<textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea>
<br><br>
<input type="submit" value="Send Email" />
</form>
</div>
</body>
</html>

이리,

  • 이메일 주소, 제목, 메시지를 입력받는 기본적인 HTML 폼이 있으며, 입력받은 매개변수들을 이메일 전송 경로로 전달합니다.

Code이그나이터 이메일 컨트롤러

이제 이메일 전송을 처리할 컨트롤러를 만들어 보겠습니다.

application/controllers/EmailController.php에 새 파일 EmailController.php를 만듭니다.

EmailController.php에 다음 코드를 추가합니다.

<?php
 
defined('BASEPATH') OR exit('No direct script access allowed');
 
class EmailController extends CI_Controller {
 
public function __construct() {
parent:: __construct();
 
$this->load->helper('url');
}
 
public function index() {
$this->load->view('email/contact');
}
 
function send() {
$this->load->config('email');
$this->load->library('email');
 
$from = $this->config->item('smtp_user');
$to = $this->input->post('to');
$subject = $this->input->post('subject');
$message = $this->input->post('message');
 
$this->email->set_newline("\r\n");
$this->email->from($from);
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($message);
 
if ($this->email->send()) {
echo 'Your Email has successfully been sent.';
} else {
show_error($this->email->print_debugger());
}
}
}

이리,

  • `class EmailController extends CI_Controller {…}`는 부모 클래스를 상속받는 이메일 컨트롤러를 정의합니다. Code점화기 컨트롤러.
  • public function __construct() {…}는 상위 생성자 메서드를 호출하는 하위 생성자를 정의합니다.
  • public function index() {…}는 연락처 양식을 표시하는 인덱스 방법을 정의합니다.
  • send() {…} 함수는 이메일을 보내는 방법을 정의합니다.
    • $this->load->config('email');는 이메일 구성 설정을 로드합니다.
    • $this->load->library('email');는 이메일 라이브러리를 로드합니다.
    • $from = $this->config->item('smtp_user');는 정의한 이메일 구성 파일에서 발신자 ID를 가져옵니다.
    • $to = $this->input->post('to'); 제출된 양식에서 값을 가져옵니다.
    • `$subject = $this->input->post('subject');`는 폼에서 입력받은 이메일 제목을 설정합니다.
    • $message = $this->input->post('message'); 양식에서 이메일 메시지를 설정합니다.
    • $this->email->set_newline(“\r\n”);는 이메일의 줄바꿈 ​​문자를 정의합니다.
    • $this->email->from($from); 발신자 이메일 주소를 설정합니다.
    • $this->email->to($to); 수신자 이메일 주소를 설정합니다.
    • $this->email->subject($subject); 이메일 제목을 설정합니다.
    • $this->email->message($message); 이메일 메시지를 설정합니다.
    • if ($this->email->send()) {…}는 이메일 전송을 시도합니다. 이메일이 성공적으로 전송되면 "이메일이 성공적으로 전송되었습니다"라는 메시지가 표시되고, 그렇지 않으면 오류 발생 원인에 대한 디버그 정보가 출력됩니다.

이제 이메일 경로를 정의해 보겠습니다.

이메일 경로

application/config/routes.php에 다음 경로를 추가합니다.

$route['send-email'] = 'EmailController';
$route['email'] = 'EmailController/send';

이제 웹 브라우저에서 문의 양식을 불러올 수 있습니다.

내장 PHP 서버를 시작해 보겠습니다.

터미널 또는 명령 프롬프트를 열고 애플리케이션의 루트 디렉토리로 이동합니다. 제 경우에는 루트 디렉토리가 C:\Sites\ci-app 드라이브에 있습니다.

cd C:\Sites\ci-app

다음 명령어를 사용하여 서버를 시작하세요.

php -S localhost:3000

다음을 로드하세요 URL 웹 브라우저에서: http://localhost:3000/send-email

다음 양식을 볼 수 있어야 합니다.

이메일 경로

수신자 이메일 주소, 제목, 이메일 내용을 입력한 다음 '이메일 보내기'를 클릭하세요. 이메일 설정이 올바르게 되어 있다면 전송 성공 메시지가 표시될 것입니다.

HTML 이메일과 첨부파일을 보내는 방법 Code이그나이터

동일한 이메일 라이브러리를 사용하여 서식이 풍부한 메시지와 파일을 보낼 수 있습니다. 두 가지 작은 변경만으로 위의 일반 텍스트 예제를 첨부 파일이 있는 HTML 이메일로 바꿀 수 있습니다.

$this->email->set_mailtype('html');
$this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>');
$this->email->attach('/path/to/report.pdf');
  • 메일 유형을 'html'로 설정: 본문에 HTML이 포함되어 있으므로 제목이나 링크와 같은 태그가 수신자의 받은 편지함에 표시된다는 것을 라이브러리에 알려줍니다.
  • 붙이다(): 서버 경로에서 파일을 가져와 메시지에 추가합니다. send() 함수를 호출하기 전에 각 파일에 대해 한 번씩 호출하십시오.

HTML 이메일을 보낼 때도 일반 텍스트 대체 형식을 포함해야 하며, 용량이 큰 첨부 파일은 엄격한 메일 서버에서 거부될 수 있다는 점을 기억하세요.

자주 묻는 질문

로컬 호스트에는 일반적으로 메일 서버가 없으므로 메일 프로토콜이 오류 메시지 없이 실패합니다. 프로토콜을 SMTP로 변경하고 실제 SMTP 호스트, 사용자 이름 및 암호를 입력하거나 SMTP 서버와 같은 서비스를 사용하십시오. Mail현지 테스트를 위한 함정.

smtp_host를 smtp.gmail.com으로, smtp_port를 465(ssl 사용)로, smtp_user를 사용자 이름으로 설정하세요. Gmail 주소. 사용 Google 일반 비밀번호 대신 앱 비밀번호를 사용하는 이유는 다음과 같습니다. Gmail 기본 비밀번호 로그인을 차단합니다.

메일 프로토콜은 PHP의 mail() 함수를 사용하고, sendmail은 서버의 로컬 바이너리를 호출하며, SMTP는 자격 증명을 사용하여 외부 메일 서버에 연결합니다. SMTP는 전송 및 인증 측면에서 가장 안정적입니다.

예. AI는 컨트롤러를 구축하고, 수신자와 제목에 대한 폼 유효성 검사를 추가하고, 성공 및 오류 처리를 포함할 수 있습니다. Rev실제 운영 환경에서 사용하기 전에 SMTP 설정을 확인하고 속도 제한을 추가하십시오.

예. print_debugger()의 출력 결과를 붙여넣으시면 AI가 SMTP 핸드셰이크 실패, 인증 오류 또는 포트 문제를 해석하여 시도해 볼 올바른 호스트, 포트 또는 암호화 값을 추천해 드립니다.

이 게시물을 요약하면 다음과 같습니다.