채택완료

메일보내기 첨부파일, 여러내용

2020-07-02 (목) 15:13:51 3,737

submit 클릭 시 메일보내지는 형식으로 구축하려하는데

지금 메일전송까지는 되는데 첨부파일전송이 안되고

메일 내용에 name="m_txt" 이외에 name="u_name" 등 여러가지 내용을 보내고 싶습니다.

html

            

Copy
<form method="post" action="sub0601_update.php" enctype="multipart/form-data" onsubmit="return mail_proc(this);" name="gogo">

                <ul>

                <li style="display:none">

                    <div width="110" align="left"></div>

                    <div align="left"><input type="text" name="femail" style="width:658px;" value="[email protected]" /></div>

</li>

                <li style="display:none">

                    <div width="110" align="left"></div>

                    <div align="left"><input type="text" name="temail" style="width:658px;" value="[email protected]" /></div>

</li>

                    <li class="lb01 h30">

                        <label for="tit">현장명 (field name)</label>

                        <input type="text" id="tit" name="tit" required />

                    </li>

                    <li class="lb02 h30">

                        <label for="s_date">접수일자 (reception date)</label>

                        <input type="text" id="s_date" name="s_date" required class="datepicker" />

                    </li>

                    <li class="lb03 h30">

                        <label for="add">신청지 주소 (order address)</label>

                        <input type="text" id="add" name="add" required />

                    </li>

                    <li class="lb04 h30">

                        <label for="u_name">신청인 성명 (subscriber name)</label>

                        <input type="text" id="u_name" name="u_name" required />

                    </li>

                    <li class="lb05 h30">

                        <label for="u_tel">신청인 전화번호 (subscriber phone number)</label>

                        <input type="tel" id="u_tel" name="u_tel" required />

                    </li>

                    <li class="lb06 h30">

                        <label for="b_date">준공일 (completion date)</label>

                        <input type="text" id="b_date" name="b_date" class="datepicker" />

                    </li>

                    <li class="lb07">

                        <label for="m_txt">하자내용 (defect content)</label>

                        <textarea name="m_txt" id="m_txt" cols="30" rows="10" required style=" vertical-align:middle;  line-height: 20px; "></textarea>

                    </li>

                    <li class="lb08 h30">

                        <label for="u_pw">비밀번호 (password)</label>

                        <input type="text" id="u_pw" name="u_pw" required />

                    </li>

                    <li class="lb09 h30">

                        <p>첨부파일 (attached file)</p>

                        <input type="file" id="u_file" name="u_file" />

                    </li>

                </ul>

 

                <div class="submit">

                    <input type="submit" value="제출 (submission)" onclick="return mail_proc(this.form);" />

                </div>

            </form>

.php

Copy
$femail = $_POST['femail'];

$temail = $_POST['temail'];

$remail = $_POST['remail'];

$hemail = $_POST['hemail'];

$subject = $_POST['tit'];

$message = $_POST['m_txt'];

 

$boundary = "----" . uniqid("part"); // 구분자

 

// --- 헤더 --- //

$headers = "Return-Path: ".str_replace("\\", "", $femail)."\r\n";

$headers .= "From: ".str_replace("\\", "", $femail)."\r\n";

if($remail) {

    $headers .= "Cc: ".str_replace("\\", "", $remail)."\r\n";

}

if($hemail) {

    $headers .= "Bcc: ".str_replace("\\", "", $hemail)."\r\n";

}

 

if($attach_url && $attach_name) { // --- 첨부파일 --- //

    $filename=$attach_name;

    $fp = fopen($attach_url,"r");

    $file = fread($fp,$attach_size);

    fclose($fp);

    if ($attach_type == ""){

        $attach_type = "application/octet-stream";

    }

    // --- 헤더 --- //

    $headers .= "MIME-Version: 1.0\r\n";

    $headers .= "Content-Type: Multipart/mixed; boundary=\"$boundary\"";

    // --- 본문 --- // 

    $mailbody = "This is a multi-part message in MIME format.\r\n\r\n";

    $mailbody .= "--$boundary\r\n";

    $mailbody .= "Content-Type: text/html; charset=utf-8\r\n";

    $mailbody .= "Content-Transfer-Encoding: base64\r\n\r\n";

    $mailbody .= chunk_split(base64_encode(str_replace("\\", "", $message))) . "\r\n";

    // --- 첨부 --- // 

    $mailbody .= "--$boundary\r\n"; 

    $mailbody .= "Content-Type: ".$attach_type."; name=\"".$filename."\"\r\n";

    $mailbody .= "Content-Transfer-Encoding: base64\r\n";

    $mailbody .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";

    $mailbody .= base64_encode($file)."\r\n\r\n";

    $mailbody .= "--$boundary--";

}

else {

    // --- 헤더 --- // 

    $headers .= "MIME-Version: 1.0\r\n"; 

    $headers .= "Content-Type: Multipart/alternative; boundary = \"$boundary\"";

    // --- 본문 --- //

    $mailbody = "--$boundary\r\n"; 

    $mailbody .= "Content-Type: text/html; charset=utf-8\r\n";

    $mailbody .= "Content-Transfer-Encoding: base64\r\n\r\n";

    $mailbody .= chunk_split(base64_encode(str_replace("\\", "", $message))) . "\r\n";

    $mailbody .= "--$boundary--\r\n\r\n"; 

}

 

$ret = mail($temail, $subject, $mailbody, $headers);

 

if(!$tit || !$u_name|| !$u_tel){

    alert('잘못된 접근입니다.');

    exit;

}

 

$file = "";

답변 3개 / 댓글 1개

채택된 답변
+20 포인트
2020-07-02 (목) 15:30:29

php 상단에

$u_name= $_POST['u_name']; 추가해주시고

$attach_url  = $_FILES['u_file']['tmp_name'];
$attach_name  = $_FILES['
u_file']['name'];

36번째줄에 어떤방식으로 u_name을 넣으실껀지 모르겠지만 만약 body 젤상단에 넣으실꺼면

 $mailbody .= chunk_split(base64_encode(str_replace("\\", "", $u_name."\r\n".$message))) . "\r\n";

이런식으로 바꾸면되지않을까요

답변에 대한 댓글 1개

답변 감사드립니다. 내용부분은 해결되었으나 파일첨부는 메일전송은 가는데 메일에서 이미지 표시가 안됩니다...

1. m_txt 입력란에 보내실 내용을 모두 작성하는 방법이 있구요.

2. 전송하는 파일에서  $message 변수에 원하시는 값을 추가해줘야 합니다.

예) $message = "신청인명 : $u_name<br>".$message;

첨부파일은 아래 링크 참조하세요.

https://sir.kr/qa/222427

1. m_txt 입력란에 보내실 내용을 모두 작성하는 방법이 있구요.

2. 전송하는 파일에서  $message 변수에 원하시는 값을 추가해줘야 합니다.

예) $message = "신청인명 : $u_name<br>".$message;

첨부파일은 아래 링크 참조하세요.

https://sir.kr/qa/222427

답변을 작성하려면 로그인이 필요합니다.