2026, 새로운 도약을 시작합니다.

메일 사진 첨부하는 방법

안녕하세요. 저는 회원메일발송 기능을 이용할 때, 메일이 전송은 되는데 텍스트만 전송이 되고 첨부된 사진은 전송이 되지 않을 때 이렇게 코드를 바꿔서 해결했습니다.

SMTP는 설정이 되어있다고 가정하고요.
lib/mailer.lib.php 파일 소스코드입니다.
 

[code]

<?php

if (!defined('_GNUBOARD_')) exit;

include_once(G5_PHPMAILER_PATH.'/PHPMailerAutoload.php');

// 메일 보내기 (파일 여러개 첨부 가능)

// type : text=0, html=1, text+html=2

function mailer($fname, $fmail, $to, $subject, $content, $type=2, $file="", $cc="", $bcc="")

{

    global $config;

    global $g5;

    // 메일발송 사용을 하지 않는다면

    if (!$config['cf_email_use']) return;

    if ($type != 1)

        $content = nl2br($content);

    $result = run_replace('mailer', $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);

    if (is_array($result) && isset($result['return'])) {

        return $result['return'];

    }

    $mail_send_result = false;

    try {

        $mail = new PHPMailer(); // defaults to using php "mail()"

        if (defined('G5_SMTP') && G5_SMTP) {

            $mail->IsSMTP(); // telling the class to use SMTP

            $mail->Host = G5_SMTP; // SMTP server

            if (defined('G5_SMTP_PORT') && G5_SMTP_PORT)

                $mail->Port = G5_SMTP_PORT;

            /* 추가 */

            $mail->SMTPAuth = true;

            $mail->SMTPSecure = G5_SMTP_SECURE;

            $mail->Username = G5_SMTP_USER;

            $mail->Password = G5_SMTP_PW;

            /* 추가 끝 */

        }

        $mail->CharSet = 'UTF-8';

        $mail->From = $fmail;

        $mail->FromName = $fname;

        $mail->Subject = $subject;

        $mail->AltBody = ""; // optional, comment out and test

        $mail->addAddress($to);

        if ($cc)

            $mail->addCC($cc);

        if ($bcc)

            $mail->addBCC($bcc);

        // 이미지 CID 자동 처리 (샘플 메일에 사용된 이미지들만)

        preg_match_all('/<img[^>]+src="([^">]+)"/i', $content, $matches); // HTML에서 img 태그의 src 속성 추출

        $image_sources = array_unique($matches[1]); // 중복된 경로를 제거

        foreach ($image_sources as $index => $src) {

            // src 경로에서 이미지 파일명만 추출

            $image_name = basename($src);

            $image_path = G5_PATH.'data/editor/파일경로/'.$image_name;

            if (file_exists($image_path)) {

                $cid = 'image_cid_' . $index;

                $mail->addEmbeddedImage($image_path, $cid, $image_name);

                // 이미지 경로를 CID로 대체

                $content = str_replace($src, 'cid:'.$cid, $content);

                // 동시에 이미지를 첨부파일로 추가

                $mail->addAttachment($image_path, $image_name);

            }

        }

        $mail->msgHTML($content);

        $mail = run_replace('mail_options', $mail, $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);

        $mail_send_result = $mail->send();

    } catch (Exception $e) {

        // 오류 처리

    }

    run_event('mail_send_result', $mail_send_result, $mail, $to, $cc, $bcc);

    return $mail_send_result;

}

// 파일을 첨부함

function attach_file($filename, $tmp_name)

{

    // 서버에 업로드 되는 파일은 확장자를 주지 않는다. (보안 취약점)

    $dest_file = G5_DATA_PATH.'/tmp/'.str_replace('/', '_', $tmp_name);

    move_uploaded_file($tmp_name, $dest_file);

    $tmpfile = array("name" => $filename, "path" => $dest_file);

    return $tmpfile;

}

?>

[/code]

도움이 되길 바랍니다. 항상 대가 없이 도와주시는 선배님들 감사합니다.

|

댓글 2개

좋은 정보 감사합니다.

꼭 필요한 정보였는데 감사합니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.
번호 분류 제목 글쓴이 날짜 조회
5402 MySQL 6일 전 조회 21
5401 JavaScript 2주 전 조회 115
5400 MySQL 1개월 전 조회 222
5399 PHP 2개월 전 조회 468
5398 PHP 2개월 전 조회 353
5397 PHP 2개월 전 조회 282
5396 기타 5개월 전 조회 559
5395 PHP 6개월 전 조회 1,196
5394 MySQL 7개월 전 조회 790
5393 웹서버 9개월 전 조회 985
5392 1년 전 조회 1,309
5391 11개월 전 조회 1,319
5390 11개월 전 조회 1,114
5389 10개월 전 조회 1,029
5388 10개월 전 조회 1,170
5387 9개월 전 조회 962
5386 JavaScript 9개월 전 조회 1,148
5385 웹서버 9개월 전 조회 1,169
5384 JavaScript 10개월 전 조회 991
5383 기타 11개월 전 조회 1,414
5382 기타 11개월 전 조회 659
5381 JavaScript 11개월 전 조회 1,074
5380 기타 11개월 전 조회 833
5379 JavaScript 11개월 전 조회 831
5378 1년 전 조회 1,396
5377 기타 1년 전 조회 941
5376 jQuery 1년 전 조회 639
5375 jQuery 1년 전 조회 871
5374 기타 1년 전 조회 947
5373 MySQL 1년 전 조회 980
🐛 버그신고