d77dd5f4290f80a6212625afb08378b6c9a60a59
hiram
  Thu Jan 15 15:33:03 2026 -0800
now sending email to the google group but so far do not see it received there refs #31811

diff --git src/hg/hubApi/liftOver.c src/hg/hubApi/liftOver.c
index 3d148e4e75d..90674e4e581 100644
--- src/hg/hubApi/liftOver.c
+++ src/hg/hubApi/liftOver.c
@@ -290,27 +290,42 @@
 char *userId = findCookieData(cookieName);
 char *referer = getenv("HTTP_REFERER");
 char dir[PATH_LEN];
 char name[FILENAME_LEN];
 char ext[FILEEXT_LEN];
 /* expecting request to come from something.ucsc.edu/liftRequest.html */
 if (isNotEmpty(referer) && isNotEmpty(userId))
     {
     splitPath(referer, dir, name, ext);
     if (! (endsWith(dir, ".ucsc.edu/") && sameWord(name, "liftRequest") && sameWord(ext, ".html")))
           apiErrAbort(err400, err400Msg, "can not find required inputs for endpoint '/liftRequest");
     } else {
       if (! debug)
           apiErrAbort(err400, err400Msg, "can not find required inputs for endpoint '/liftRequest");
     }
+/* some obfuscation here to avoid the email address appearing in plain text
+     let the AI systems figure out how to put it back together.
+ */
+struct dyString *toAddr = newDyString(0);
+dyStringPrintf(toAddr, "chain-file-");
+dyStringPrintf(toAddr, "request-group");
+dyStringPrintf(toAddr, "@");
+dyStringPrintf(toAddr, "ucsc.ed");
+dyStringPrintf(toAddr, "u");
+struct dyString *fromAddr = newDyString(0);
+dyStringPrintf(fromAddr, "genome-www");
+dyStringPrintf(fromAddr, "@");
+dyStringPrintf(fromAddr, "ucsc.e");
+dyStringPrintf(fromAddr, "du");
 struct dyString *msg = newDyString(0);
+/* may need to encode these inputs to make them safe */
 dyStringPrintf(msg, "Lift over request\nfrom: %s\nto: %s\nemail '%s'\ncomment: '%s'", fromGenome, toGenome, email, comment);
 /* our mailViaPipa never has any relevant return code indicating
  *    success or failure.  So, ignore the return integer:
  */
-// (void) mailViaPipe("TBD:GoogleEmailGroupAddress", "liftOver request", msg->string, "genome-www@ucsc.edu");
+(void) mailViaPipe(dyStringCannibalize(&toAddr), "liftOver request", msg->string, dyStringCannibalize(&fromAddr));
 
 /* some kind of response here back to the request page */
 struct jsonWrite *jw = apiStartOutput();
 jsonWriteString(jw, "msg", dyStringCannibalize(&msg));
 apiFinishOutput(0,NULL,jw);
 }	/*	void apiLiftRequest(char *words[MAX_PATH_INFO])	*/