char *cp;
struct headers *hdr;
- /* remove all leading whitespace (even newlines) */
- while (*str==' ' || *str=='\t' || *str=='\n') {
+ /* remove leading whitespace */
+ while (*str==' ' || *str=='\t') {
str++;
}
if ((i = get_header(name, hdrtab)) == NOTOK) {
- /* no header we would care for: push it through */
- fprintf(out, "%s: %s", name, str);
+ /* no header we would care for */
+ if (mh_strcasecmp(name, attach_hdr)!=0 &&
+ mh_strcasecmp(name, sign_hdr)!=0 &&
+ mh_strcasecmp(name, enc_hdr)!=0) {
+ /* push it through */
+ fprintf(out, "%s: %s", name, str);
+ }
return;
}
/* it's one of the interesting headers */
hdr = &hdrtab[i];
- if (hdr->flags & HIGN || !*str) {
+ if (hdr->flags & HIGN || strcmp(str, "\n")==0) {
return;
}
fprintf(out, "%sDate: %s\n", resentstr, dtimenow());
}
- strncpy(from, getusername(), sizeof(from));
+ snprintf(from, sizeof(from), "%s@%s", getusername(), LocalName());
if ((cp = getfullname()) && *cp) {
snprintf(signature, sizeof(signature), "%s <%s>", cp, from);
} else {
if (!(msgflags & MFRM)) {
fprintf(out, "%sFrom: %s\n", resentstr, signature);
} else {
- /* In case the From: header contains multiple addresses. */
+ /*
+ ** Add a Sender: header because the From: header could
+ ** be fake or contain multiple addresses.
+ */
fprintf(out, "%sSender: %s\n", resentstr, from);
}
if (!(msgflags & MVIS)) {
- fprintf(out, "%sBcc: Blind Distribution List: ;\n", resentstr);
+ fprintf(out, "%sBcc: undisclosed-recipients:;\n", resentstr);
}
if (badmsg) {
unlink(tmpfil);
FILE *out = NULL;
for (mp=bccs; mp; mp=mp->m_next) {
- /*
- ** Note: This draft file will be left existing by send(1),
- ** although renamed with backup prefix.
- ** TODO: We should have it removed eventually.
- */
bccdraft = getcpy(m_mktemp2("/tmp/", invo_name, NULL, &out));
fprintf(out, "To: %s\n", mp->m_text);
fprintf(out, "Subject: [BCC] %s", subject ? subject : "");
mp->m_text);
unlink(bccdraft);
}
- /* TODO: unlink renamed bcc draft after send(1) */
}
}