郵件傳送的群發邏輯

2021-08-28 14:04:56 字數 2950 閱讀 1458

在實際專案中,如果傳送郵件,是不可能從資料庫中查出一條然後發一條的,因為資料量太龐大了,系統會崩潰,慣用的邏輯就是想把需要傳送的全部訊息全部查詢出來,放到乙個list中,這個屬於一條,比如說我需要給使用者傳送乙個郵件,但是這個郵件的內容可能涉及到多個模組的資料,所以我們這個時候可以把那些內容都寫死(相當於做乙個模板,然後在裡面填充資料就可以),模組之間誰呼叫誰的,最後用list把本次郵件全給弄起來,然後用乙個map存起來,map的id可以是郵箱號,value為這些拼裝好的資料,把這些封裝成乙個類,誰需要呼叫誰用,豈不美哉?呼叫郵件介面只需要三個引數(乙個是郵箱號,乙個是郵件內容,乙個是鏈結資料庫的金鑰(該金鑰在乙個專案中是固定的,可以用列舉在配置檔案中做成乙個常量,直接引用就可以))然後傳送就ok了,

還有一點就是寫完**如何在不上線的情況下測試,考慮到郵箱傳送都是定時傳送的,所以需要在原來**上的定時器上做手腳,定時任務一般解除安裝service中,這個時候只需要把原來的定時任務取消掉 然後加上乙個@scheduled(fixedrate = 5000),意思是每五秒執行一次,然後debug執行整個專案(注意:這裡不能在裡面加上main方法,因為這個定時任務可能需要用到其他介面的資料,而main方法只是從當前的方法的頭部開始執行,如果這個方法不是最開始的方法,那麼就會報空指標錯誤,親自踩過的坑),打斷點看引數就可以了。

/***@description:郵件**邏輯

*@author: wuyongfei

*@date: 2018/9/07 12:05

*/@slf4j

@component

public class mailtask ")

private string receiver;

@value("$")

private string envir;

@scheduled(cron = "0 30 08 ? * mon-sat")

public void automailtask()

log.info("automailtask!!!");

//構造乙個方法類

mailentity mailentity = new mailentity();

mailentity.setmailtype(mailtypeenum.everyday_eight.name());

mailentity.setsubject("每日資料");

mailentity.setcontent("每日資料");

listreceiverlist = arrays.aslist(receiver.split(","));

mailentity.setreceivers(receiverlist);

attachmententity entity6 = new attachmententity();

entity6.setsql(automailsql.everydayprofit.replaceall("\\n", " "));

entity6.setfilename("逐日盈虧");

entity6.settemplate("jdbctemplate");

attachmententity entity1 = new attachmententity();

entity1.setsql(automailsql.ordersql);

entity1.setfilename("平台客戶訂單");

entity1.settemplate("jdbctemplate");

attachmententity entity2 = new attachmententity();

entity2.setsql(automailsql.marginsql);

entity2.setfilename("保證金");

entity2.settemplate("jdbctemplate");

attachmententity entity3 = new attachmententity();

entity3.setsql(automailsql.rechargesql);

entity3.setfilename("客戶充值");

entity3.settemplate("jdbctemplate");

attachmententity entity4 = new attachmententity();

entity4.setsql(automailsql.pingcang);

entity4.setfilename("客戶平倉");

entity4.settemplate("jdbctemplate");

attachmententity entity5 = new attachmententity();

entity5.setsql(automailsql.withdraw);

entity5.setfilename("客戶提現");

entity5.settemplate("jdbctemplate");

//放入list中

listattachmententitylist = new arraylist<>();

attachmententitylist.add(entity6);

attachmententitylist.add(entity1);

attachmententitylist.add(entity2);

attachmententitylist.add(entity3);

attachmententitylist.add(entity4);

attachmententitylist.add(entity5);

//把list放入目標類中//這個目標類中有需要的郵箱號和郵件內容

mailentity.setattach(attachmententitylist);//獲得資料庫連線的引數

automailservice.send(mailentity, messagetypeenum.mime_message);//呼叫介面進行傳送

}

傳送郵件,支援群發,非常好用

傳送郵件 public class smtpmanager else mail.to.add newmailaddress address,displayname 設定郵件的抄送收件人 這個就簡單多了,如果不想快點下崗重要檔案還是cc乙份給領導比較好 mailaddress manage hotma...

C 傳送郵件小程式(支援群發,附件)

在這裡,主要使用了system.web.mail命名空間下的類,具體 如下 先新建win專案,再複製 using system using system.drawing using system.collections using system.componentmodel using system...

PHPmailer 郵件群發

phpmailer郵件類傳送郵件範例及 指定多個收件人 xjjtjt.cn phpmailer是乙個用於傳送電子郵件的php函式包。它提供的功能包括 支援多種郵件編碼包括 8bit,base64,binary和quoted printable 支援smtp驗證 支援冗餘smtp伺服器 支援帶附件的郵...