"JAVAMail"を使用してgmail-emailの内容を読み終えました。文字列で保存できました。今私はコンテンツ(文字列)から特定の登録URLを取得したいと思います。私はこれを行うことができますどのように、文字列をタグとHREFの多くが含まれていますが、私は下記の文メールコンテンツから「登録」URLを抽出する方法
"Please <a class="h5" href="https://newstaging.mobilous.com/en/user-register/******" target="_blank">click here</a> to complete your registration".
内に存在する「ここをクリック」という単語にハイパーリンクにのみ提供されたURLを抽出したいですハイパーリンク上のURLを "ここをクリック"
のhref = "https://newstaging.mobilous.com/en/user-register/******" ターゲット= "_ブランク"
I次のコードを使用してこれを試しました
package email;
import java.util.ArrayList;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
public class emailAccess {
public static void check(String host, String storeType, String user,
String password)
{
try {
//create properties field
Properties properties = new Properties();
properties.put("mail.imap.host",host);
properties.put("mail.imap.port", "993");
properties.put("mail.imap.starttls.enable", "true");
properties.setProperty("mail.imap.socketFactory.class","javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.imap.socketFactory.fallback", "false");
properties.setProperty("mail.imap.socketFactory.port",String.valueOf(993));
Session emailSession = Session.getDefaultInstance(properties);
//create the POP3 store object and connect with the pop server
Store store = emailSession.getStore("imap");
store.connect(host, user, password);
//create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("messages.length---" + messages.length);
int n=messages.length;
for (int i = 0; i<n; i++) {
Message message = messages[i];
ArrayList<String> links = new ArrayList<String>();
if(message.getSubject().contains("Thank you for signing up for AppExe")){
String desc=message.getContent().toString();
// System.out.println(desc);
Pattern linkPattern = Pattern.compile(" <a\\b[^>]*href=\"[^>]*>(.*?)</a>", Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
Matcher pageMatcher = linkPattern.matcher(desc);
while(pageMatcher.find()){
links.add(pageMatcher.group());
}
}else{
System.out.println("Email:"+ i + " is not a wanted email");
}
for(String temp:links){
if(temp.contains("user-register")){
System.out.println(temp);
}
}
/*System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
System.out.println("Text: " + message.getContent().toString());*/
}
//close the store and folder objects
emailFolder.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String host = "imap.gmail.com";
String mailStoreType = "imap";
String username = "[email protected]";
String password = "*****";
check(host, mailStoreType, username, password);
}
}
空白= "_私はアウトが
<クラス= "H5" のhref = "https://newstaging.mobilous.com/en/user-register/******" ターゲットとして入れてしまっ実行するには
「>私はhttps://newstaging.mobilous.com/en/user-register/ ******
すなわちのみhrefの値を抽出するにはどうすればよい
は、感謝を提案してください。
あなたは「私はスプリットを使って試してみました」と言うとき...あなたが買ってあげますあなたが試したこと、その結果は何か、そしてなぜその結果はあなたが望むものではないのかを示すならば、ここでより良い応答が得られます。 – billjamesdev
配列に必要なURLを取得するために使用したコードを更新し、それに応じて私の質問を編集しました。ありがとうございました。 – user2326333
正規表現のurl部分をグループ化し、 'pageMatcher 'を呼び出すときに特定のグループnrを提供するように、正規表現を変更して' href 'や他の不要な部分を除外したり、グループ() ' – Andy