Tutorial Pasukan Lucee MY

Menghantar E-mel daripada Aplikasi CFML dengan cfmail

Belajar menghantar e-mel dengan tag cfmail dalam CFML: atribut utama, konfigurasi SMTP dalam Lucee Admin, e-mel HTML, lampiran, dan cara elak folder spam.

Menghantar E-mel daripada Aplikasi CFML dengan cfmail
0
Kandungan

Menghantar E-mel daripada Aplikasi CFML dengan cfmail

Untuk menghantar e-mel daripada aplikasi Lucee, anda guna tag cfmail atau padanan skripnya mail. Atribut wajib hanya tiga: from, to, dan subject, manakala pelayan SMTP boleh ditetapkan sekali dalam Lucee Admin supaya setiap panggilan tidak perlu mengulang butiran sambungan. Artikel ini membimbing anda daripada tag asas hingga menyelesaikan masalah penghantaran dan mengelak folder spam.

Tag cfmail dan Atribut Utamanya

Bentuk paling ringkas cfmail ialah tag dengan tiga atribut wajib dan badan teks sebagai kandungan e-mel:

<cfmail
    from="kedai@contoh.com"
    to="pelanggan@contoh.com"
    subject="Pengesahan Pesanan Anda">
Terima kasih, pesanan anda telah kami terima.
</cfmail>

Dalam sintaks skrip, tag yang sama ditulis begini:

mail from="kedai@contoh.com" to="pelanggan@contoh.com" subject="Pengesahan Pesanan" {
    writeOutput("Terima kasih, pesanan anda telah kami terima.");
};

Atribut selain tiga yang wajib itu termasuk cc, bcc, replyTo, dan failTo untuk salinan dan alamat balasan, charset untuk pengekodan aksara, dan wrapText untuk memecah baris panjang. Untuk penerima berbilang, to menerima senarai alamat yang dipisahkan koma, dan anda boleh menyertakan nama paparan dalam bentuk Nama <alamat@contoh.com>.

Menetapkan Pelayan SMTP dalam Lucee Admin

Jika atribut server tidak dinyatakan, Lucee menggunakan pelayan mel yang ditetapkan dalam Lucee Admin. Untuk menetapkannya, buka Lucee Admin dan pergi ke Services lalu Mail, kemudian isi hos, port, nama pengguna, dan kata laluan pelayan SMTP anda. Tetapan ini menjadi lalai untuk seluruh pelayan, jadi sebarang cfmail tanpa atribut server akan menggunakannya secara automatik.

Anda juga boleh menetapkan pelayan lalai ini melalui fail CFConfig.json semasa menggunakan CommandBox, berguna untuk automasi dan penempatan yang boleh diulang. Ini menjauhkan kata laluan SMTP daripada kod sumber aplikasi anda, satu amalan yang sejajar dengan pengurusan rahsia dalam pemboleh ubah persekitaran.

Menetapkan SMTP dalam Application.cfc

Untuk aplikasi tertentu yang perlu menggunakan pelayan mel berbeza, anda boleh menetapkan senarai pelayan dalam Application.cfc melalui pemboleh ubah this.mailservers. Setiap entri ialah struktur dengan hos, port, nama pengguna, kata laluan, dan bendera ssl atau tls:

component {
    this.name = "kedaiDalamTalian";

    this.mailservers = [
        {
            host: "smtp.contoh.com",
            port: 587,
            username: "kirim@contoh.com",
            password: "kataLaluanSulit",
            ssl: false,
            tls: true
        }
    ];
}

Kunci host juga boleh ditulis sebagai server atau smtp. Apabila struktur ini wujud, cfmail dalam aplikasi itu menggunakan pelayan tersebut tanpa perlu mengulang butiran pada setiap tag. Untuk memahami Application.cfc dengan lebih mendalam, baca panduan memahami Application.cfc.

E-mel HTML lawan Teks Biasa

Atribut type pada cfmail menentukan format kandungan, dengan nilai text, plain, html, text/plain, dan text/html. Tanpa nilai html, badan e-mel dihantar sebagai teks biasa, jadi tag HTML akan kelihatan mentah kepada penerima. Untuk e-mel berformat, tetapkan type="html" dan tulis HTML dalam badan:

<cfmail
    from="kedai@contoh.com"
    to="pelanggan@contoh.com"
    subject="Tawaran Minggu Ini"
    type="html">
<h2>Selamat Datang</h2>
<p>Tawaran istimewa hanya untuk anda.</p>
</cfmail>

Amalan baik ialah menghantar kedua-dua versi menggunakan bahagian multipart, tetapi untuk kebanyakan kes memadai memilih satu format yang konsisten. Ingat bahawa klien e-mel tidak menyokong CSS penuh seperti pelayar, jadi gunakan jadual dan gaya sebaris untuk susun atur yang stabil.

Lampiran dan cfmailparam

Untuk melampirkan fail, anda boleh guna atribut mimeAttach yang menerima laluan fail, atau lebih fleksibel lagi tag cfmailparam yang bersarang di dalam cfmail. cfmailparam boleh melampirkan fail atau menambah pengepala tersuai:

<cfmail
    from="kedai@contoh.com"
    to="pelanggan@contoh.com"
    subject="Invois Anda">
Sila rujuk invois yang dilampirkan.
<cfmailparam file="/laluan/invois-123.pdf" disposition="attachment">
</cfmail>

Atribut disposition boleh bernilai attachment untuk lampiran biasa atau inline untuk imej yang dipaparkan terus dalam badan e-mel, yang berguna bagi e-mel HTML dengan imej terbenam melalui contentId.

Menghantar Segera lawan Spool

Secara lalai Lucee menyimpan e-mel dalam spool dan menghantarnya melalui bebenang latar belakang untuk prestasi yang lebih baik. Ini bermakna panggilan cfmail kembali serta-merta tanpa menunggu pelayan SMTP menjawab, tetapi ralat SMTP tidak dibuang kepada kod anda, sebaliknya dicatat ke log remoteclient.log. Jika anda perlu menghantar segera dan menangkap ralat, tetapkan async="false":

try {
    mail from="kedai@contoh.com" to="pelanggan@contoh.com"
        subject="Ujian" server="smtp.contoh.com" port=587
        username="kirim@contoh.com" password="kataLaluan" useTls=true
        async="false" {
        writeOutput("Hantar segera");
    };
} catch (any e) {
    cflog(text="Gagal hantar e-mel: #e.message#", type="error");
}

Menyelesaikan Masalah Penghantaran

Apabila e-mel tidak sampai, semak mengikut urutan ini. Pertama, pastikan pelayan SMTP dan port betul, dan pengesahan nama pengguna serta kata laluan diterima. Kedua, pastikan mod penyulitan sepadan dengan penyedia: useSsl bermaksud SSL tersirat dari bait pertama, lazimnya port 465, manakala useTls bermula dengan SMTP biasa lalu menaik taraf melalui STARTTLS, lazimnya port 587.

Atribut debug pada cfmail membolehkan log terperinci ke konsol, yang memaparkan perbualan SMTP sebenar dan memudahkan anda melihat di mana sambungan gagal. Jadual berikut meringkaskan atribut sambungan yang paling kerap menjadi punca masalah:

AtributMaksudContoh lazim
serverHos pelayan SMTPsmtp.contoh.com
portPort TCP pelayan25, 465, 587
usernameNama pengguna pengesahankirim@contoh.com
passwordKata laluan pengesahankataLaluan
useSslSSL tersirat dari bait pertamatrue (port 465)
useTlsNaik taraf STARTTLStrue (port 587)

Jika sambungan gagal dengan ralat PKIX path building failed, ini bermakna sijil pelayan tidak dipercayai, lazimnya sijil ditandatangani sendiri. Selesaikan dengan menambah sijil itu dalam Lucee Admin di Services lalu SSL certificates, atau import ke truststore JVM menggunakan keytool. Untuk logik ralat yang lebih teratur, rujuk panduan log dan pemantauan.

Mengelak Masuk Folder Spam: SPF, DKIM, dan DMARC

Keterhantaran bergantung pada reputasi domain penghantar, bukan pada kod CFML anda semata-mata. Tiga rekod DNS pada domain penghantar ialah asasnya. SPF menyenaraikan pelayan yang dibenarkan menghantar bagi pihak domain anda. DKIM menandatangani e-mel supaya penerima boleh mengesahkan ia tidak diubah semasa transit. DMARC memberitahu pelayan penerima apa yang perlu dilakukan apabila SPF atau DKIM gagal.

Ketiga-tiga rekod ini perlu ditetapkan pada zon DNS domain penghantar anda, bukan dalam Lucee. Tanpa SPF dan DKIM yang betul, e-mel transaksi anda berkemungkinan besar ditapis sebagai spam oleh penyedia besar seperti Gmail dan Outlook. Ini adalah kerja domain, tetapi ia menentukan sama ada e-mel yang dihantar oleh cfmail anda sampai atau tidak.

Had Kadar Penghantaran

Penyedia SMTP mengenakan had pada jumlah e-mel yang boleh dihantar dalam tempoh tertentu, dan melebihi had itu boleh menyebabkan akaun digantung. Untuk e-mel transaksi, had ini jarang menjadi isu, tetapi kempen kepada ribuan penerima perlu dipecahkan kepada kelompok kecil dengan jeda antara kelompok.

Fikirkan juga had penerima: sesetengah penyedia mengehadkan bilangan penerima bagi setiap mesej. Apabila menghantar pukal, gelung melalui senarai dan hantar secara berasingan, atau gunakan perkhidmatan mel transaksi khusus yang direka untuk isipadu tinggi.

Mengapa E-mel Ujian Tidak Boleh Dihantar ke Domain Orang Lain

Apabila menguji, anda mungkin tergoda menghantar e-mel ujian ke alamat rawak di domain orang lain untuk melihat sama ada ia sampai. Ini boleh dianggap sebagai penyalahgunaan dan boleh menyebabkan domain anda disenaraikan hitam. Sebaliknya, guna alamat ujian pada domain yang anda miliki, atau perkhidmatan peti mel ujian yang disediakan untuk tujuan ini.

Sebab teknikalnya mudah: menghantar ke domain yang bukan milik anda tanpa kebenaran ialah ciri spam, dan pelayan penerima akan menandakan penghantar yang menghantar ke alamat yang tidak wujud atau tidak diminta. Untuk mengesahkan penghantaran tanpa menyusahkan pihak lain, periksa log SMTP dan gunakan alamat pada domain anda sendiri.

Soalan Lazim (FAQ)

Bagaimana cara menghantar e-mel dalam CFML?

Guna tag cfmail dengan atribut from, to, dan subject, atau padanan skripnya mail, dan isi badan mesej sebagai kandungan tag.

Di mana saya menetapkan pelayan SMTP dalam Lucee?

Dalam Lucee Admin di bawah Services lalu Mail, atau melalui this.mailservers dalam Application.cfc untuk tetapan khusus aplikasi.

Apakah beza useSsl dan useTls pada cfmail?

useSsl menggunakan SSL tersirat dari bait pertama, lazimnya port 465, manakala useTls bermula dengan SMTP biasa lalu menaik taraf melalui STARTTLS, lazimnya port 587.

Bagaimana cara melampirkan fail pada e-mel CFML?

Guna tag cfmailparam bersarang dengan atribut file dan disposition="attachment", atau atribut mimeAttach untuk satu lampiran mudah.

Mengapa e-mel saya masuk folder spam?

Lazimnya kerana rekod SPF, DKIM, dan DMARC pada domain penghantar tidak ditetapkan dengan betul, atau reputasi IP penghantar rendah.

Sumber

0 komen

Log masuk untuk menjawab atau memberi komen.

Log masuk