SMTPを利用したメール送信は、基本的なアプローチでも高度なアプローチでも、さまざまSMTP 기반 이메일 발송은 기본 또는 고급 접근 방식을 사용하여 여러 가지 방법으로 구현할 수 있습니다. 아래에서는 더 간단한 옵션과 더 복잡한 옵션을 예제 PHP 코드와 함께 제공합니다.
간단한 솔루션: 호스팅 및 도메인 임대
SMTP 기반 이메일 발송의 가장 간단한 방법은 호스팅 및 도메인을 임대하는 것입니다.
대부분의 호스팅 서비스는 PHP 실행을 지원하며 미리 구성된 SMTP를 제공합니다. 따라서 PHP의 mail() 함수를 사용하여 직접 이메일을 보낼 수 있습니다. 아래와 같이:
<?php
function sendEmail($emailAddresses, $subjects, $sentences) {
foreach ($emailAddresses as $email) {
// Select a random subject
$subject = $subjects[array_rand($subjects)];
// Generate the email body
$message = '';
foreach ($sentences as $sentenceOptions) {
$message .= $sentenceOptions[array_rand($sentenceOptions)] . " ";
}
// Send the email
$headers = "From: no-reply@domain.com\r\n";
if (mail($email, $subject, $message, $headers)) {
echo "Email successfully sent to: $email\n";
} else {
echo "Failed to send email to: $email\n";
}
}
}
// Define email addresses
$emailAddresses = [
"example1@domain.com",
"example2@domain.com",
"example3@domain.com",
];
// Define possible subjects
$subjects = [
"Important Notification",
"New Offer Available",
"Discover Our Latest Services",
];
// Define possible sentences (with variations)
$sentences = [
["Welcome!", "Hello!", "Dear customer,"],
["We are excited to share our latest promotion.", "Our newest updates might interest you.", "Don't miss out on our latest opportunities!"],
["Please visit our website for more information.", "Details can be found on our website.", "Find additional information on our homepage."],
];
// Send emails
sendEmail($emailAddresses, $subjects, $sentences);
?>
중요 팁: 스팸을 피하기 위한 랜덤화된 콘텐츠
스팸 필터를 피하는 방법에 대한 기사에서 우리는 이메일 내용을 랜덤화하는 것이 가치가 있다고 이미 강조했습니다. 위의 PHP 코드는 제목과 문장을 무작위로 선택하여 이를 수행합니다.
고급 솔루션: 로컬 웹 서버 및 데이터베이스 사용
더 복잡한 솔루션이 필요한 경우 로컬 웹 서버(Apache 또는 Nginx)를 실행하는 것도 가능합니다. 다음 코드는 MySQL 데이터베이스에서 수신자를 가져오며, 무작위화된 내용으로 이메일을 보냅니다.
<?php
//exit;
set_time_limit(999999999);
ini_set("max_execution_time", 30000); //sec
ini_set("display_errors", 1);
ini_set("display_startup_errors", 1);
error_reporting(E_ALL);
header("Content-Type: text/html; charset=utf-8");
header("Content-Type: text/html; charset=UTF-8");
mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
mb_http_input("UTF-8");
mb_regex_encoding("UTF-8");
//---------sanitize incoming parameters start
if (!empty($_POST)) {
foreach ($_POST as $post => $value) {
$_POST[$post] = addslashes($_POST[$post]);
}
}
if (!empty($_PUT)) {
foreach ($_PUT as $put => $value) {
$_PUT[$put] = addslashes($_PUT[$put]);
}
}
if (!empty($_GET)) {
foreach ($_GET as $get => $value) {
$_GET[$get] = addslashes($_GET[$get]);
}
}
if (!empty($_REQUEST)) {
foreach ($_REQUEST as $key => $value) {
$_REQUEST[$key] = addslashes($_REQUEST[$key]);
}
}
//---------sanitize incoming parameters end
require_once dirname(__FILE__) . "/phpmailer-6.1.1/Exception.php";
require_once dirname(__FILE__) . "/phpmailer-6.1.1/OAuth.php";
require_once dirname(__FILE__) . "/phpmailer-6.1.1/PHPMailer.php";
require_once dirname(__FILE__) . "/phpmailer-6.1.1/POP3.php";
require_once dirname(__FILE__) . "/phpmailer-6.1.1/SMTP.php";
/*CONFIG*/
/*CONFIG*/
/*CONFIG*/
/*CONFIG*/
echo memory_get_usage() . "<br>";
$host = "localhost";
$user = "root";
$pswd = "";
$database = "multikuldo";
$connect = mysqli_connect($host, $user, $pswd, $database);
mysqli_query($connect, "set names utf8");
mysqli_select_db($connect, $database);
$sleeptime = 3; // 3 is optimal
$runtime = 0;
$testcount = 50; // Send test email every 50th email
$testemail = "yourtest@gmail.com";
$table_name = "emails";
function getRandElementFromArray($array)
{
return $array[array_rand($array, 1)];
}
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
$fromemail[0][] = "sender@gmail.com";
$sender[0][] = "sender name1";
$sender[0][] = "sender name2";
$sender[0][] = "sender name3";
$subject[0][] = "subject1";
$subject[0][] = "subject2";
$subject[0][] = "subject3";
$body[0][] = "Welcome!";
$body[0][] = "Dear Editor!";
$body[1][] = "body1";
$body[1][] = "body2";
$body[1][] = "body3";
$body[2][] = "body1";
$body[2][] = "body2";
$body[2][] = "body3";
$body[3][] = "body1";
$body[3][] = "body2";
$body[3][] = "body3";
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
/*SENTENCE VARIATIONS*/
do {
// Start the loop if not redirected via JavaScript
sleep($sleeptime);
// Create a PHPMailer instance
$phpmailer = new PHPMailer\PHPMailer\PHPMailer();
set_time_limit(9999999);
$isz = file_get_contents("isz.txt"); // previous email id
echo "<br>isz: " . $isz . "<br>";
// Fetch the data to be sent
$query =
"
SELECT *
FROM " .
$table_name .
"
WHERE
sended = '0'
LIMIT 1
";
echo $query . "<hr>";
$sql_result = mysqli_query($connect, $query);
$result = [];
while ($row = mysqli_fetch_array($sql_result)) {
$result[] = $row;
}
//print_r($result);
if (empty($result)) {
die("the end");
}
//exit;
file_put_contents("isz.txt", $result[0]["id"]); // one more than what was written
$log = file_get_contents("log.txt");
try {
// Debugging settings
$phpmailer->SMTPDebug = 1;
// Set character encoding
$phpmailer->CharSet = "UTF-8";
// Set email format to HTML
$phpmailer->isHTML(true);
// Sender details
$phpmailer->setFrom(
$fromemail[0][rand(0, count($fromemail[0]) - 1)],
$sender[0][rand(0, count($sender[0]) - 1)]
);
$phpmailer->AddReplyTo(
$fromemail[0][rand(0, count($fromemail[0]) - 1)],
$sender[0][rand(0, count($sender[0]) - 1)]
);
$phpmailer->Sender = $phpmailer->From;
// Recipient details
$cimzettnev = explode("@", $result[0]["email"]);
$phpmailer->addAddress($result[0]["email"], $cimzettnev[1]);
// SMTP connection settings for sending the email
$phpmailer->isSMTP();
$phpmailer->Host = "ssl://smtp.gmail.com";
$phpmailer->Port = 465;
$phpmailer->SMTPAuth = true;
$phpmailer->AuthType = "LOGIN"; // 'CRAM-MD5', 'PLAIN', 'LOGIN
//$phpmailer->SMTPSecure = false;
$phpmailer->SMTPSecure = "ssl";
//$phpmailer->SMTPAutoTLS = false;
$phpmailer->Username = "your@gmail.com";
$phpmailer->Password = "12345";
// Message content
$phpmailer->Subject = "" . $subject[0][rand(0, count($subject[0]) - 1)];
// HTML body
$phpmailer->Body =
'<html> ... </html>'; // Truncated for brevity
// Send the email
$phpmailer->Send();
// Mark the sent data
$query =
"
UPDATE " .
$table_name .
"
SET sended = 1
WHERE id = '" .
$result[0]["id"] .
"'
";
mysqli_query($connect, $query);
} catch (phpmailerException $err) {
// Log mailer error
} catch (Exception $err) {
// Log general error
}
} while (!empty($result));
echo memory_get_usage() . "<br>";
echo "ready";
?>
관련 링크:
간단한 방법과 고급 방법 모두 대량 이메일 발송을 위한 유연한 옵션을 제공합니다. 귀하의 필요에 맞는 솔루션을 선택하고 캠페인을 시작하십시오!