changeset 300:973fb0ea5c2f

Send direct message with sender's From:
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 11 Oct 2016 23:34:51 +0859
parents b38514180d13
children ba0730073d6f
files s4-funcs.sh
diffstat 1 files changed, 23 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/s4-funcs.sh	Thu Sep 29 14:55:17 2016 +0859
+++ b/s4-funcs.sh	Tue Oct 11 23:34:51 2016 +0859
@@ -994,10 +994,12 @@
 }
 smail() {
   # smail rcpts subj (file)
-  # $SMAIL_TO <- Recipient value of To: header
+  # $SMAIL_TO  <- Recipient value of To: header
+  # $MAIL_FROM <- From: header value
+  from=`echo "${MAIL_FROM:-$admin}"|nkf -jM|tr -d '\n'`
   rcpt=`echo $1`		# strip newlines
   subj=`echo $2|nkf -jM|tr -d '\n'`
-  (_m4 -D_RCPT_="${SMAIL_TO:-$rcpt}" -D_SUBJ_="\`$subj'" -D_FROM_=$admin $msgdir/mail-header.m4
+  (_m4 -D_RCPT_="${SMAIL_TO:-$rcpt}" -D_SUBJ_="\`$subj'" -D_FROM_="$from" $msgdir/mail-header.m4
    cat $3 | nkf -jd ) | sendmail -f $admin $rcpt
 }
 setviastring() {
@@ -2052,10 +2054,21 @@
 	echo "なにかメッセージを..." | html p
 	return 0
       fi
-      smail "`email4groupbyuid "$grp" $usel` $user" \
-	    "`gecos $user` さんからのメッセージ" <<EOF
+      gecos=`gecos $user`
+      mkfrom=`getpar mkfrom`
+      if [ x"$mkfrom" = x"yes" ]; then
+	safegc=`echo "$gecos" | tr -d '<>@'`
+	myuid=`query "SELECT rowid FROM user WHERE name='$user';"`
+	fromad=`email4groupbyuid "$grp" "$myuid"`
+	mail_from="$safegc <$fromad>"
+      else
+	mail_from="$admin"
+      fi
+      MAIL_FROM=$mail_from \
+	       smail "`email4groupbyuid "$grp" $usel` $user" \
+	       "$gecos さんからのメッセージ" <<EOF
 $url
-のグループ「$grp」のメンバーである `gecos $user` さんから、
+のグループ「$grp」のメンバーである $gecos さんから、
 あなた宛へのメッセージです。
 ----------------------------------------------------------
 $text
@@ -2067,7 +2080,7 @@
 		left join user_s b on a.name=b.name and b.key='gecos';"
 	html pre<<EOF
 `query "$sql"`
-(送信者である `gecos $user` さんも含まれます)
+(送信者である $gecos さんも含まれます)
 EOF
 	err SendDone: `echo $sql`
       fi
@@ -2130,7 +2143,7 @@
 	 WHERE name in (select user from grp_mem where
 		 gname=(select gname from grp where rowid=$grid))
 	 ORDER by a.gecos;"
-  err grpaction: `echo "$sql"`
+  err grpaction: "`echo \"$sql\"`"
   tf=$tmpd/title.$$
   echo "グループ[<a href=\"?grp+$grid\">$grp</a>]参加メンバーに対する操作" > $tf
   cmmsg="`cgi_radio rm commission id=\"cmadmin\"`<label
@@ -2180,6 +2193,8 @@
 `cgi_radio rm send id="sendmsg"`<label
  for="sendmsg">メッセージ送信</label>
 <div>
+`cgi_checkbox mkfrom yes 'id="mkfrom" checked'`<label for="mkfrom"
+>差出人を自分に(チェックを外すと相手が返事できない)</label><br>
 `cgi_textarea text "" cols=40`
 </div>
 ${isowner:+$cmmsg$excmsg}
@@ -2219,7 +2234,7 @@
   #  2: else, 2.1: owner-group where the $user belongs
   #           2.2: else, owner-group is not moderated
   # blog(id, author), blog_s(id, key='owner', val= ->owner)
-  cat<<EOF | tee tmp/sql.out
+  cat<<EOF ## | tee tmp/sql.out
 CREATE TEMPORARY VIEW readableblogs AS
  SELECT blog.rowid rid, id, author
  FROM blog

yatex.org